onasty/internal/service/authsrv/jwt.go(view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
package authsrv
import (
"context"
"time"
"github.com/gofrs/uuid/v5"
"github.com/olexsmir/onasty/internal/dtos"
"github.com/olexsmir/onasty/internal/jwtutil"
)
func (a *AuthSrv) ParseJWTToken(token string) (jwtutil.Payload, error) {
return a.jwtTokenizer.Parse(token)
}
func (a AuthSrv) issueTokens(ctx context.Context, userID uuid.UUID) (dtos.Tokens, error) {
toks, err := a.createTokens(userID)
if err != nil {
return dtos.Tokens{}, err
}
if err := a.sessionstore.Set(ctx, userID, toks.Refresh, time.Now().Add(a.refreshTokenTTL)); err != nil {
return dtos.Tokens{}, err
}
return toks, nil
}
func (a AuthSrv) createTokens(userID uuid.UUID) (dtos.Tokens, error) {
accessToken, err := a.jwtTokenizer.AccessToken(jwtutil.Payload{UserID: userID.String()})
if err != nil {
return dtos.Tokens{}, err
}
refreshToken, err := a.jwtTokenizer.RefreshToken()
if err != nil {
return dtos.Tokens{}, err
}
return dtos.Tokens{
Access: accessToken,
Refresh: refreshToken,
}, err
}
|