Files
Björn Benouarets f509f6e524 feat: add utility functions and helpers
- Add JWT token generation and validation utilities
- Add password hashing with bcrypt for secure authentication
- Add pagination helper for API responses
- Add random string generation for tokens and IDs
- Add session management utilities
- Add admin user initialization functionality
2025-09-25 23:24:18 +02:00

35 lines
798 B
Go

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
}