AI: checking the actual expire

This commit is contained in:
2025-09-21 14:51:02 +01:00
parent f078ac7d0b
commit a3345afbfa

View File

@ -1,6 +1,7 @@
package middleware package middleware
import ( import (
"encoding/json"
"errors" "errors"
"time" "time"
@ -78,12 +79,41 @@ func (jm *JwtManager) GetUserIdFromAccess(accessToken string) (uuid.UUID, error)
return uuid.Nil, err return uuid.Nil, err
} }
// Check if token is valid (including expiry check)
if !token.Valid {
return uuid.Nil, NotValidToken
}
if claims, ok := token.Claims.(jwt.MapClaims); ok { if claims, ok := token.Claims.(jwt.MapClaims); ok {
tokenType, ok := claims["Type"] tokenType, ok := claims["Type"]
if !ok || tokenType.(string) != "access" { if !ok || tokenType.(string) != "access" {
return uuid.Nil, NotValidToken return uuid.Nil, NotValidToken
} }
// Additional explicit expiry check
expireClaim, ok := claims["Expire"]
if !ok {
return uuid.Nil, NotValidToken
}
var expireTime time.Time
switch exp := expireClaim.(type) {
case float64:
expireTime = time.Unix(int64(exp), 0)
case json.Number:
expInt, err := exp.Int64()
if err != nil {
return uuid.Nil, NotValidToken
}
expireTime = time.Unix(expInt, 0)
default:
return uuid.Nil, NotValidToken
}
if time.Now().After(expireTime) {
return uuid.Nil, NotValidToken
}
userId, err := uuid.Parse(claims["UserID"].(string)) userId, err := uuid.Parse(claims["UserID"].(string))
if err != nil { if err != nil {
return uuid.Nil, NotValidToken return uuid.Nil, NotValidToken