@@ -3,6 +3,7 @@ package token
33import (
44 "context"
55 "github.com/golang-jwt/jwt/v4"
6+ "github.com/google/uuid"
67 "github.com/pkg/errors"
78 "github.com/tespkg/bytes-be/common/global"
89 "gorm.io/gorm"
@@ -31,7 +32,7 @@ func GenClaims(dto *GenTokenDto) UserClaims {
3132 IssuedAt : jwt .NewNumericDate (time .Now ()),
3233 ExpiresAt : jwt .NewNumericDate (time .Now ().Add (time .Hour * time .Duration (defaultTokenExpireDuration ))),
3334 Issuer : Issuer ,
34- ID : dto . UserId ,
35+ ID : uuid . NewString () ,
3536 Subject : dto .UserId ,
3637 },
3738 Platform : dto .Platform ,
@@ -77,21 +78,21 @@ func GenToken(dto *GenTokenDto) (string, error) {
7778 return signedToken , nil
7879}
7980
80- var TokenFormatError = errors .New ("token format error" )
81- var TokenInvalidError = errors .New ("invalid token" )
82- var TokenExpiredError = errors .New ("expired token" )
83- var TokenUnknownError = errors .New ("unknown token error" )
84- var TokenClaimsError = errors .New ("token claims error" )
85- var TokenSignatureInvalidError = errors .New ("token invalid signature error" )
81+ var FormatError = errors .New ("token format error" )
82+ var InvalidError = errors .New ("invalid token" )
83+ var ExpiredError = errors .New ("expired token" )
84+ var UnknownError = errors .New ("unknown token error" )
85+ var ClaimsError = errors .New ("token claims error" )
86+ var SignatureInvalidError = errors .New ("token invalid signature error" )
8687
8788func VerifyToken (ctx context.Context , session * gorm.DB , tokenString string ) (context.Context , error ) {
8889 token , err := jwt .ParseWithClaims (tokenString , & UserClaims {}, func (token * jwt.Token ) (interface {}, error ) {
8990 if claims , ok := token .Claims .(* UserClaims ); ! ok {
90- return nil , TokenClaimsError
91+ return nil , ClaimsError
9192 } else {
9293 secret , err := GetUserSecret (& GenTokenDto {
9394 Session : session ,
94- UserId : claims .ID ,
95+ UserId : claims .Subject ,
9596 Platform : "" ,
9697 Imei : "" ,
9798 ClientVersion : "" ,
@@ -103,44 +104,30 @@ func VerifyToken(ctx context.Context, session *gorm.DB, tokenString string) (con
103104 }
104105 return []byte (secret ), nil
105106 }
106-
107- //if third.GlobalClients.EnableSingleLogin {
108- // if claims, ok := token.Claims.(*WalletClaims); !ok {
109- // return nil, TokenClaimsError
110- // } else {
111- // secret, err := GetUserSecret(session, claims.ID)
112- // if err != nil {
113- // return nil, err
114- // }
115- // return []byte(secret), nil
116- // }
117- //}
118- //
119- //return []byte(jwtSecret), nil
120107 })
121108 if err != nil {
122109 if errors .Is (err , jwt .ErrTokenMalformed ) {
123- return ctx , TokenFormatError
110+ return ctx , FormatError
124111 } else if errors .Is (err , jwt .ErrTokenExpired ) {
125- return ctx , TokenExpiredError
112+ return ctx , ExpiredError
126113 } else if errors .Is (err , jwt .ErrTokenNotValidYet ) {
127- return ctx , TokenExpiredError
114+ return ctx , ExpiredError
128115 } else if errors .Is (err , jwt .ErrTokenSignatureInvalid ) {
129- return ctx , TokenSignatureInvalidError
116+ return ctx , SignatureInvalidError
130117 } else {
131- return ctx , TokenUnknownError
118+ return ctx , UnknownError
132119 }
133120 }
134121
135122 if ! token .Valid {
136- return ctx , TokenInvalidError
123+ return ctx , InvalidError
137124 }
138125
139126 if claims , ok := token .Claims .(* UserClaims ); ok {
140127 // fmt.Printf("claims %+v\n", claims)
141128 ctx = context .WithValue (ctx , ClaimsCtx , claims )
142129 return ctx , nil
143130 } else {
144- return ctx , TokenClaimsError
131+ return ctx , ClaimsError
145132 }
146133}
0 commit comments