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