feat(jwt): clean trash and improve logic

This commit is contained in:
Sipachev Igor 2025-02-14 23:55:56 +07:00
parent a99e990270
commit 340bbe1882

23
jwt.go
View File

@ -12,29 +12,24 @@ import (
"time"
)
type RefreshTokenClaims struct {
JWT
}
func CreateRefreshTokenByAccess(accessClaims JWT, ttl time.Duration) RefreshTokenClaims {
return RefreshTokenClaims{
JWT: JWT{
func CreateRefreshTokenByAccess(accessClaims JWT, ttl time.Duration) JWT {
return JWT{
Type: "refresh",
Ttl: ttl,
SessionId: accessClaims.SessionId,
RegisteredClaims: jwt.RegisteredClaims{
ID: accessClaims.ID,
},
ExpiresAt: jwt.NewNumericDate(time.Now().Add(ttl)),
IssuedAt: jwt.NewNumericDate(time.Now()),
NotBefore: accessClaims.ExpiresAt,
},
}
}
func ParseRefreshToken(token string, publicKey *rsa.PublicKey) (*RefreshTokenClaims, error) {
refreshDecodedClaims, err := Decode(token, &RefreshTokenClaims{}, publicKey)
func ParseRefreshToken(token string, publicKey *rsa.PublicKey) (*JWT, error) {
refreshDecodedClaims, err := Decode(token, &JWT{}, publicKey)
if err != nil {
return nil, err
}
refreshTokenClaims, ok := refreshDecodedClaims.(*RefreshTokenClaims)
refreshTokenClaims, ok := refreshDecodedClaims.(*JWT)
if !ok {
return nil, fmt.Errorf("invalid refresh token claims")
}
@ -43,14 +38,12 @@ func ParseRefreshToken(token string, publicKey *rsa.PublicKey) (*RefreshTokenCla
type JWT struct {
Type string `json:"t"`
Ttl time.Duration `json:"td"`
SessionId string `json:"si,omitempty"`
AuthorizationInfo string `json:"ai,omitempty"`
jwt.RegisteredClaims
}
func (j *JWT) WithTtl(ttl time.Duration) *JWT {
j.Ttl = ttl
j.ExpiresAt = jwt.NewNumericDate(time.Now().Add(ttl))
j.IssuedAt = jwt.NewNumericDate(time.Now())
j.NotBefore = jwt.NewNumericDate(time.Now())