From 20a5361a06681c8606c5ea560858a163421788e6 Mon Sep 17 00:00:00 2001 From: nquidox Date: Mon, 8 Sep 2025 22:38:30 +0300 Subject: [PATCH] refresh token in cookie --- internal/interfaces/jwtProvider.go | 7 ++++++- internal/provider/token/service.go | 30 +++++++++++------------------- 2 files changed, 17 insertions(+), 20 deletions(-) diff --git a/internal/interfaces/jwtProvider.go b/internal/interfaces/jwtProvider.go index 455164c..eaa16b5 100644 --- a/internal/interfaces/jwtProvider.go +++ b/internal/interfaces/jwtProvider.go @@ -1,7 +1,12 @@ package interfaces +import ( + "net/http" + "time" +) + type JWTProvider interface { CreateAccessToken(userUuid string) (string, error) - CreateRefreshToken(userUuid, tokenUuid string) (string, int64, error) + CreateRefreshToken(refreshUuid string, expires time.Time) *http.Cookie Parse(token string) (string, string, error) } diff --git a/internal/provider/token/service.go b/internal/provider/token/service.go index 3e8f05c..1888abe 100644 --- a/internal/provider/token/service.go +++ b/internal/provider/token/service.go @@ -4,6 +4,7 @@ import ( "fmt" "github.com/golang-jwt/jwt/v5" log "github.com/sirupsen/logrus" + "net/http" "strconv" "strings" "time" @@ -51,26 +52,17 @@ func (j *JWT) CreateAccessToken(userUuid string) (string, error) { return signedToken, nil } -func (j *JWT) CreateRefreshToken(userUuid, tokenUuid string) (string, int64, error) { - now := time.Now() - exp := now.Add(j.RefreshExpire).Unix() - - token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{ - "exp": exp, - "iat": now.Unix(), - "iss": j.Issuer, - "nbf": now.Unix(), - "sub": userUuid, - "tkn": tokenUuid, - }) - - signedToken, err := token.SignedString([]byte(j.SecretKey)) - if err != nil { - return "", 0, err +func (j *JWT) CreateRefreshToken(refreshUuid string, expires time.Time) *http.Cookie { + return &http.Cookie{ + Name: "refresh_uuid", + Value: refreshUuid, + Path: "", + Expires: expires, + Secure: true, + HttpOnly: true, + SameSite: 3, + Partitioned: false, } - - return signedToken, exp, nil - } func (j *JWT) Parse(token string) (string, string, error) {