feat(jwt): clean trash and improve logic
This commit is contained in:
parent
a99e990270
commit
340bbe1882
23
jwt.go
23
jwt.go
@ -12,29 +12,24 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type RefreshTokenClaims struct {
|
func CreateRefreshTokenByAccess(accessClaims JWT, ttl time.Duration) JWT {
|
||||||
JWT
|
return JWT{
|
||||||
}
|
|
||||||
|
|
||||||
func CreateRefreshTokenByAccess(accessClaims JWT, ttl time.Duration) RefreshTokenClaims {
|
|
||||||
return RefreshTokenClaims{
|
|
||||||
JWT: JWT{
|
|
||||||
Type: "refresh",
|
Type: "refresh",
|
||||||
Ttl: ttl,
|
|
||||||
SessionId: accessClaims.SessionId,
|
|
||||||
RegisteredClaims: jwt.RegisteredClaims{
|
RegisteredClaims: jwt.RegisteredClaims{
|
||||||
ID: accessClaims.ID,
|
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) {
|
func ParseRefreshToken(token string, publicKey *rsa.PublicKey) (*JWT, error) {
|
||||||
refreshDecodedClaims, err := Decode(token, &RefreshTokenClaims{}, publicKey)
|
refreshDecodedClaims, err := Decode(token, &JWT{}, publicKey)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
refreshTokenClaims, ok := refreshDecodedClaims.(*RefreshTokenClaims)
|
refreshTokenClaims, ok := refreshDecodedClaims.(*JWT)
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("invalid refresh token claims")
|
return nil, fmt.Errorf("invalid refresh token claims")
|
||||||
}
|
}
|
||||||
@ -43,14 +38,12 @@ func ParseRefreshToken(token string, publicKey *rsa.PublicKey) (*RefreshTokenCla
|
|||||||
|
|
||||||
type JWT struct {
|
type JWT struct {
|
||||||
Type string `json:"t"`
|
Type string `json:"t"`
|
||||||
Ttl time.Duration `json:"td"`
|
|
||||||
SessionId string `json:"si,omitempty"`
|
SessionId string `json:"si,omitempty"`
|
||||||
AuthorizationInfo string `json:"ai,omitempty"`
|
AuthorizationInfo string `json:"ai,omitempty"`
|
||||||
jwt.RegisteredClaims
|
jwt.RegisteredClaims
|
||||||
}
|
}
|
||||||
|
|
||||||
func (j *JWT) WithTtl(ttl time.Duration) *JWT {
|
func (j *JWT) WithTtl(ttl time.Duration) *JWT {
|
||||||
j.Ttl = ttl
|
|
||||||
j.ExpiresAt = jwt.NewNumericDate(time.Now().Add(ttl))
|
j.ExpiresAt = jwt.NewNumericDate(time.Now().Add(ttl))
|
||||||
j.IssuedAt = jwt.NewNumericDate(time.Now())
|
j.IssuedAt = jwt.NewNumericDate(time.Now())
|
||||||
j.NotBefore = jwt.NewNumericDate(time.Now())
|
j.NotBefore = jwt.NewNumericDate(time.Now())
|
||||||
|
Loading…
Reference in New Issue
Block a user