Use subject claim for user id
This commit is contained in:
@@ -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,8 +19,7 @@ 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)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user