diff --git a/REAL_ISSUES_TODOLIST.json b/REAL_ISSUES_TODOLIST.json index 0f004aab8..d48dc16fc 100644 --- a/REAL_ISSUES_TODOLIST.json +++ b/REAL_ISSUES_TODOLIST.json @@ -283,10 +283,12 @@ "title": "Endpoint sessions redirige au lieu de retourner JSON", "priority": "P2", "priority_rank": 7, - "status": "open", + "status": "fixed", + "fixed_at": "2025-12-26T15:35:00Z", + "fix_description": "Ajout d'une route GET sans trailing slash (sessions.GET(\"\", ...)) en plus de la route avec slash pour éviter la redirection 301 de Gin", "blocking": false, "endpoint": "GET /api/v1/sessions", - "test_command": "curl -X GET 'http://localhost:8080/api/v1/sessions'", + "test_command": "curl -X GET 'http://localhost:8080/api/v1/sessions' -H 'Authorization: Bearer $TOKEN'", "expected_result": "HTTP 200 avec liste des sessions OU HTTP 401 si authentification requise", "actual_result": "HTTP 301 (Moved Permanently) vers /api/v1/sessions/ (avec trailing slash)", "error_message": "Redirection au lieu de réponse JSON", @@ -294,11 +296,10 @@ "http_code": 301, "user_impact": "L'endpoint redirige au lieu de retourner des données. Problème de configuration de route.", "tested_at": "2025-12-26T15:18:42Z", - "root_cause": "Configuration de route incorrecte - trailing slash manquant ou en trop", - "fix_suggestion": "Vérifier la configuration des routes dans le routeur pour gérer correctement les trailing slashes", + "root_cause": "Configuration de route incorrecte - Gin redirige automatiquement /sessions vers /sessions/ si seule la route avec slash est définie", + "fix_suggestion": "Ajouter les deux routes (avec et sans trailing slash) pour compatibilité", "files_to_check": [ - "veza-backend-api/cmd/api/main.go", - "veza-backend-api/internal/router/router.go" + "veza-backend-api/internal/api/router.go" ], "estimated_hours": 0.5 } diff --git a/veza-backend-api/internal/api/router.go b/veza-backend-api/internal/api/router.go index 41c0c4d4d..1b7a07012 100644 --- a/veza-backend-api/internal/api/router.go +++ b/veza-backend-api/internal/api/router.go @@ -1251,7 +1251,9 @@ func (r *APIRouter) setupCoreProtectedRoutes(v1 *gin.RouterGroup) { { sessions.POST("/logout", sessionHandler.Logout()) sessions.POST("/logout-all", sessionHandler.LogoutAll()) - sessions.GET("/", sessionHandler.GetSessions()) + // ISSUE-007: Ajouter route sans trailing slash pour éviter redirection 301 + sessions.GET("", sessionHandler.GetSessions()) + sessions.GET("/", sessionHandler.GetSessions()) // Garder aussi avec slash pour compatibilité sessions.DELETE("/:session_id", sessionHandler.RevokeSession()) sessions.GET("/stats", sessionHandler.GetSessionStats()) sessions.POST("/refresh", sessionHandler.RefreshSession())