38 lines
724 B
Go
38 lines
724 B
Go
package jwt
|
|
|
|
import (
|
|
"errors"
|
|
|
|
jwt2 "github.com/golang-jwt/jwt/v5"
|
|
)
|
|
|
|
const UserClaimKey = "User-Claims"
|
|
|
|
func CreateToken(secret []byte, claims *UserClaims) (string, error) {
|
|
return jwt2.NewWithClaims(jwt2.SigningMethodHS512, claims).SignedString(secret)
|
|
}
|
|
|
|
func ParseToken(tokenString string, secret []byte) (*UserClaims, error) {
|
|
token, err := jwt2.ParseWithClaims(tokenString, &UserClaims{}, func(t *jwt2.Token) (interface{}, error) {
|
|
return secret, nil
|
|
})
|
|
|
|
var claim *UserClaims
|
|
if token.Claims != nil {
|
|
cc, ok := token.Claims.(*UserClaims)
|
|
if ok {
|
|
claim = cc
|
|
}
|
|
}
|
|
|
|
if err != nil {
|
|
return claim, err
|
|
}
|
|
|
|
if !token.Valid {
|
|
return claim, errors.New("token is not valid")
|
|
}
|
|
|
|
return claim, nil
|
|
}
|