package jwt import ( "maps" "time" "github.com/golang-jwt/jwt" ) func CreateJWT( secretKey string, data map[string]any, ttl time.Duration, ) (string, error) { claims := jwt.MapClaims{ "exp": time.Now().Add(ttl).Unix(), "iat": time.Now().Unix(), "nbf": time.Now().Unix(), } maps.Copy(claims, data) token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) signedToken, err := token.SignedString([]byte(secretKey)) if err != nil { return "", nil } return signedToken, nil }