integrity-checkin/pkg/util/permission.go
2022-11-23 20:56:28 +08:00

43 行
918 B
Go

package util
import (
"github.com/golang-jwt/jwt"
)
type UserClaims struct {
UserID int `json:"user_id"`
RoleID int `json:"role_id"`
jwt.StandardClaims
}
const (
JWTSecret = "fee516aa-8f5b-4248-a80c-bf467d40fd62"
)
func ParseJWT(token string) (*UserClaims, error) {
tokenClaims, err := jwt.ParseWithClaims(token, &UserClaims{}, func(token *jwt.Token) (interface{}, error) {
return []byte(JWTSecret), nil
})
if err != nil {
return nil, err
}
if tokenClaims != nil {
if claims, ok := tokenClaims.Claims.(*UserClaims); ok && tokenClaims.Valid {
return claims, nil
}
}
return nil, err
}
func GenerateJWT(userID int, roleID int) string {
token := jwt.NewWithClaims(jwt.SigningMethodHS256, UserClaims{
UserID: userID,
RoleID: roleID,
StandardClaims: jwt.StandardClaims{},
})
str, err := token.SignedString([]byte(JWTSecret))
if err != nil {
panic(err)
}
return str
}