trepa/internal/core/jwt.go
qpismont 3adfcc890f
All checks were successful
ci/woodpecker/push/lint Pipeline was successful
ci/woodpecker/push/tests Pipeline was successful
ci/woodpecker/push/build Pipeline was successful
add jwt helpers test
2025-02-26 20:21:12 +00:00

40 lines
781 B
Go

package core
import (
"github.com/golang-jwt/jwt/v5"
)
type JWTClaims struct {
jwt.RegisteredClaims
AccountId int `json:"account_id"`
RoleId int `json:"role_id"`
}
var jwtSecret string
func InitJWT(secret string) {
jwtSecret = secret
}
func SignJWT(claims JWTClaims) (string, error) {
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
return token.SignedString([]byte(jwtSecret))
}
func VerifyJWT(token string) (JWTClaims, error) {
parsedClaims := JWTClaims{}
claims, err := jwt.ParseWithClaims(token, &parsedClaims, func(token *jwt.Token) (any, error) {
return []byte(jwtSecret), nil
})
if err != nil {
return JWTClaims{}, NewInternalServerError(err)
}
if !claims.Valid {
return JWTClaims{}, ErrInvalidToken
}
return parsedClaims, nil
}