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 }