fixed multiple roles!
This commit is contained in:
+36
-9
@@ -96,7 +96,7 @@ func GenerateTokens(email, userAgent, ipAddress string) (string, string, error)
|
||||
userID = helper.UUIDGenerator()
|
||||
}
|
||||
|
||||
roleID, err := services.GetRoleIDFromEmail(email)
|
||||
roleID, err := services.GetRoleIDsFromEmail(email)
|
||||
if err != nil {
|
||||
return "", "", fmt.Errorf("error checking role in database: %w", err)
|
||||
}
|
||||
@@ -136,7 +136,7 @@ func GenerateTokens(email, userAgent, ipAddress string) (string, string, error)
|
||||
}
|
||||
|
||||
_, err = db.DB.Exec(`
|
||||
INSERT INTO jwt_sessions (id, user_id, refresh_token_hash, user_agent, ip_address, created_at, updated_at, expires_at, is_revoked)
|
||||
INSERT INTO jwt_sessions (jwt_sessions_id, user_id, refresh_token_hash, user_agent, ip_address, created_at, updated_at, expires_at, is_revoked)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||
`, sessionID, userID, refreshTokenHash, userAgent, ipAddress, currentTime, currentTime, expiresAt, false)
|
||||
if err != nil {
|
||||
@@ -155,7 +155,18 @@ func GenerateTokens(email, userAgent, ipAddress string) (string, string, error)
|
||||
}
|
||||
}
|
||||
|
||||
accessToken, err := generateAccessToken(email, sessionID, userID, roleID)
|
||||
// Convert roleIDs slice to a comma-separated string for the token claim
|
||||
var roleIDsStr string
|
||||
if len(roleID) > 0 {
|
||||
for i, r := range roleID {
|
||||
if i > 0 {
|
||||
roleIDsStr += ","
|
||||
}
|
||||
roleIDsStr += fmt.Sprintf("%d", r)
|
||||
}
|
||||
}
|
||||
|
||||
accessToken, err := generateAccessToken(email, sessionID, userID, roleIDsStr)
|
||||
if err != nil {
|
||||
return "", "", fmt.Errorf(errFormatWithContext, errMsgFailedToGenerateAccessToken, err)
|
||||
}
|
||||
@@ -318,13 +329,21 @@ func RefreshAccessToken(refreshTokenString, userAgent, ipAddress string) (string
|
||||
userID = session.UserID // Fallback to session's user ID
|
||||
}
|
||||
|
||||
roleID, err := services.GetRoleIDFromEmail(email)
|
||||
roleIDs, err := services.GetRoleIDsFromEmail(email)
|
||||
var roleIDsStr string
|
||||
if err != nil {
|
||||
helper.LogError(err, fmt.Sprintf("Failed to fetch role ID for email %s during refresh", email))
|
||||
roleID = ""
|
||||
roleIDsStr = ""
|
||||
} else {
|
||||
for i, r := range roleIDs {
|
||||
if i > 0 {
|
||||
roleIDsStr += ","
|
||||
}
|
||||
roleIDsStr += fmt.Sprintf("%d", r)
|
||||
}
|
||||
}
|
||||
|
||||
accessToken, err := generateAccessToken(email, session.ID, userID, roleID)
|
||||
accessToken, err := generateAccessToken(email, session.ID, userID, roleIDsStr)
|
||||
if err != nil {
|
||||
helper.LogError(err, "Failed to generate access token during refresh")
|
||||
return "", fmt.Errorf("failed to generate access token: %w", err)
|
||||
@@ -469,13 +488,21 @@ func RefreshAccessTokenWithEmailFallback(refreshTokenString, userAgent, ipAddres
|
||||
userID = session.UserID // Fallback to session's user ID
|
||||
}
|
||||
|
||||
roleID, err := services.GetRoleIDFromEmail(email)
|
||||
roleIDs, err := services.GetRoleIDsFromEmail(email)
|
||||
var roleIDsStr string
|
||||
if err != nil {
|
||||
helper.LogError(err, fmt.Sprintf("Failed to fetch role ID for email %s during refresh", email))
|
||||
roleID = ""
|
||||
roleIDsStr = ""
|
||||
} else {
|
||||
for i, r := range roleIDs {
|
||||
if i > 0 {
|
||||
roleIDsStr += ","
|
||||
}
|
||||
roleIDsStr += fmt.Sprintf("%d", r)
|
||||
}
|
||||
}
|
||||
|
||||
accessToken, err := generateAccessToken(email, session.ID, userID, roleID)
|
||||
accessToken, err := generateAccessToken(email, session.ID, userID, roleIDsStr)
|
||||
if err != nil {
|
||||
helper.LogError(err, "Failed to generate access token during refresh")
|
||||
return "", fmt.Errorf("failed to generate access token: %w", err)
|
||||
|
||||
Reference in New Issue
Block a user