diff options
Diffstat (limited to 'auth')
| -rw-r--r-- | auth/controller.go | 27 | 
1 files changed, 26 insertions, 1 deletions
diff --git a/auth/controller.go b/auth/controller.go index c5c931a..86c0b2c 100644 --- a/auth/controller.go +++ b/auth/controller.go @@ -109,7 +109,7 @@ func handleSignIn(ctx *gin.Context) {  		RefreshClaims{  			jwt.RegisteredClaims{  				IssuedAt:  jwt.NewNumericDate(time.Now()), -				ExpiresAt: jwt.NewNumericDate(time.Now().Add(time.Hour * 6)), +				ExpiresAt: jwt.NewNumericDate(time.Now().Add(time.Hour * 60)),  			},  			u.ID,  			u.TokenVersion, @@ -197,7 +197,32 @@ func handleRefresh(ctx *gin.Context) {  		return  	} +	var refreshToken string +	eat := claims.ExpiresAt.Unix() +	if eat != 0 && eat < time.Now().Add(time.Hour * 6).Unix() { +		// if refresh token expires in less than 6 hours, get a new one +	  refreshToken, err = jwt.NewWithClaims(jwt.SigningMethodHS256, +	  	RefreshClaims{ +	  		jwt.RegisteredClaims{ +	  			IssuedAt:  jwt.NewNumericDate(time.Now()), +	  			ExpiresAt: jwt.NewNumericDate(time.Now().Add(time.Hour * 60)), +	  		}, +	  		u.ID, +	  		u.TokenVersion, +	  	}, +	  ).SignedString(REFRESH_KEY) +	  if err != nil { +	  	// TODO: handle potential errors +	  	ctx.Error(err) +	  	ctx.Abort() +	  	return +	  } +  } else { +		refreshToken = req.RefreshToken +	} +  	ctx.JSON(http.StatusOK, gin.H{  		"auth_token": authToken, +		"refresh_token": refreshToken,  	})  }  |