package utils import ( "os" "time" "github.com/golang-jwt/jwt/v5" ) func GenerateJWT(issuer string, claims jwt.MapClaims, expiresIn time.Duration) (string, error) { claims["iss"] = os.Getenv("JWT_ISSUER") claims["aud"] = issuer claims["iat"] = time.Now().Unix() claims["exp"] = time.Now().Add(expiresIn).Unix() token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) tokenString, err := token.SignedString([]byte(os.Getenv("JWT_SECRET"))) if err != nil { return "", err } return tokenString, nil } func VerifyJWT(tokenString string) (jwt.MapClaims, error) { token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) { return []byte(os.Getenv("JWT_SECRET")), nil }) if err != nil { return nil, err } return token.Claims.(jwt.MapClaims), nil }