Use subject claim for user id

This commit is contained in:
2025-11-30 08:10:54 -06:00
parent 1b741ed49a
commit 432ed2d5aa

View File

@@ -4,6 +4,7 @@ import (
"errors"
"fmt"
"os"
"strconv"
"time"
"github.com/golang-jwt/jwt/v5"
@@ -18,7 +19,6 @@ var (
// Claims represents the JWT claims structure
type Claims struct {
UserID int64 `json:"user_id"`
Email string `json:"email"`
jwt.RegisteredClaims
}
@@ -38,9 +38,9 @@ func NewJWTManager(secretKey string, tokenDuration time.Duration) *JWTManager {
// GenerateToken creates a new JWT token for a user
func (m *JWTManager) GenerateToken(userID int64, email string) (string, error) {
claims := Claims{
UserID: userID,
Email: email,
RegisteredClaims: jwt.RegisteredClaims{
Subject: strconv.FormatInt(userID, 10),
ExpiresAt: jwt.NewNumericDate(time.Now().Add(m.tokenDuration)),
IssuedAt: jwt.NewNumericDate(time.Now()),
NotBefore: jwt.NewNumericDate(time.Now()),
@@ -97,5 +97,9 @@ func (m *JWTManager) RefreshToken(tokenString string) (string, error) {
return "", err
}
return m.GenerateToken(claims.UserID, claims.Email)
userId, err := strconv.ParseInt(claims.Subject, 10, 64)
if err != nil {
return "", err
}
return m.GenerateToken(userId, claims.Email)
}