feat(auth): Add logout route

This commit is contained in:
Björn Benouarets
2026-01-19 09:23:25 +01:00
parent 88dadab6a2
commit 9d7adb740c
4 changed files with 122 additions and 0 deletions

View File

@@ -97,3 +97,31 @@ func GetSessionCache(sessionID string) *SessionDetails {
masterlog.Debug("Session retrieved from cache", map[string]interface{}{"session_id": sessionID, "user_id": sessionDetails.UserID})
return &sessionDetails
}
func DeleteSession(sessionID string) error {
masterlog.Debug("Deleting session from database and cache", map[string]interface{}{"session_id": sessionID})
if err := DeleteSessionCache(sessionID); err != nil {
masterlog.Debug("Failed to delete session from cache", map[string]interface{}{"error": err.Error(), "session_id": sessionID})
return err
}
if err := database.DB.Where("id = ?", sessionID).Delete(&models.Session{}).Error; err != nil {
masterlog.Debug("Failed to delete session from database", map[string]interface{}{"error": err.Error(), "session_id": sessionID})
return err
}
masterlog.Debug("Session deleted from database and cache", map[string]interface{}{"session_id": sessionID})
return nil
}
func DeleteSessionCache(sessionID string) error {
masterlog.Debug("Deleting session from cache", map[string]interface{}{"session_id": sessionID})
if cache.Cache.Client == nil {
masterlog.Debug("Redis client not initialized", map[string]interface{}{"session_id": sessionID})
return nil
}
if err := cache.Cache.Client.Do(cache.Cache.Context, cache.Cache.Client.B().Del().Key(sessionID).Build()).Error(); err != nil {
masterlog.Debug("Failed to delete session from cache", map[string]interface{}{"error": err.Error(), "session_id": sessionID})
return err
}
masterlog.Debug("Session deleted from cache", map[string]interface{}{"session_id": sessionID})
return nil
}