added fetching of role_id

This commit is contained in:
2025-12-18 10:25:04 +08:00
parent 8c67cd38e7
commit ee45b546a3
3 changed files with 43 additions and 4 deletions
+21 -4
View File
@@ -52,6 +52,10 @@ func GenerateTokens(email, userAgent, ipAddress string) (string, string, error)
userID = helper.UUIDGenerator()
}
roleID, err := services.GetRoleIDFromEmail(email)
if err != nil {
return "", "", fmt.Errorf("error checking role in database: %w", err)
}
sessionID := helper.UUIDGenerator()
refreshToken, err := generateSecureToken()
@@ -107,7 +111,7 @@ func GenerateTokens(email, userAgent, ipAddress string) (string, string, error)
}
}
accessToken, err := generateAccessToken(email, sessionID, userID)
accessToken, err := generateAccessToken(email, sessionID, userID, roleID)
if err != nil {
return "", "", fmt.Errorf(errFormatWithContext, errMsgFailedToGenerateAccessToken, err)
}
@@ -116,7 +120,7 @@ func GenerateTokens(email, userAgent, ipAddress string) (string, string, error)
return accessToken, refreshToken, nil
}
func generateAccessToken(email, sessionID, userID string) (string, error) {
func generateAccessToken(email, sessionID, userID, roleID string) (string, error) {
AccessTokenExpiration := os.Getenv("ACCESS_TOKEN_EXPIRATION_MINUTES")
if AccessTokenExpiration == "" {
log.Println("AccessTokenExpiration not set (in minutes), defaulting to 45 minutes")
@@ -128,6 +132,7 @@ func generateAccessToken(email, sessionID, userID string) (string, error) {
claims := &models.AccessToken{
Email: email,
UserID: userID,
RoleID: roleID,
SessionID: sessionID,
Exp: expirationTime,
RegisteredClaims: jwt.RegisteredClaims{
@@ -269,7 +274,13 @@ func RefreshAccessToken(refreshTokenString, userAgent, ipAddress string) (string
userID = session.UserID // Fallback to session's user ID
}
accessToken, err := generateAccessToken(email, session.ID, userID)
roleID, err := services.GetRoleIDFromEmail(email)
if err != nil {
helper.LogError(err, fmt.Sprintf("Failed to fetch role ID for email %s during refresh", email))
roleID = ""
}
accessToken, err := generateAccessToken(email, session.ID, userID, roleID)
if err != nil {
helper.LogError(err, "Failed to generate access token during refresh")
return "", fmt.Errorf("failed to generate access token: %w", err)
@@ -414,7 +425,13 @@ func RefreshAccessTokenWithEmailFallback(refreshTokenString, userAgent, ipAddres
userID = session.UserID // Fallback to session's user ID
}
accessToken, err := generateAccessToken(email, session.ID, userID)
roleID, err := services.GetRoleIDFromEmail(email)
if err != nil {
helper.LogError(err, fmt.Sprintf("Failed to fetch role ID for email %s during refresh", email))
roleID = ""
}
accessToken, err := generateAccessToken(email, session.ID, userID, roleID)
if err != nil {
helper.LogError(err, "Failed to generate access token during refresh")
return "", fmt.Errorf("failed to generate access token: %w", err)