fix: logout supprime access_token cookie + bouton toujours visible
CI / lint (push) Failing after 2s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / e2e (push) Has been skipped
CI / security (push) Failing after -8s

- Backend: delete_cookie access_token (/) + refresh_token
- Logout ne requiert plus auth (graceful si token expire)
- Bouton Deconnexion toujours visible dans le menu
This commit is contained in:
2026-06-16 12:43:50 -04:00
parent 9f382e4960
commit 83279b536f
3 changed files with 10 additions and 11 deletions
+7 -4
View File
@@ -217,18 +217,21 @@ async def refresh_token_endpoint(request: Request, response: Response):
async def logout( async def logout(
request: Request, request: Request,
response: Response, response: Response,
current_user=Depends(require_auth),
): ):
"""Logout: revoke refresh token and delete cookie.""" """Logout: revoke refresh token and delete cookies."""
refresh_tok = request.cookies.get("refresh_token") refresh_tok = request.cookies.get("refresh_token")
if refresh_tok: if refresh_tok:
payload = decode_token(refresh_tok) payload = decode_token(refresh_tok)
if payload: if payload:
try:
revoke_token(payload["jti"]) revoke_token(payload["jti"])
except Exception:
pass # token already revoked
response.delete_cookie("refresh_token", path="/api/auth/refresh") response.delete_cookie("refresh_token", path="/api/auth/refresh")
logger.info(f"User '{current_user['username']}' logged out") response.delete_cookie("access_token", path="/")
return {"message": "Déconnecté avec succès"} response.delete_cookie("access_token", path="/api") # just in case
return {"message": "Deconnecte avec succes"}
@router.get("/me") @router.get("/me")
-1
View File
@@ -662,7 +662,6 @@
id="logout-btn" id="logout-btn"
type="button" type="button"
role="menuitem" role="menuitem"
style="display:none"
> >
<span <span
class="menu-list-icon" class="menu-list-icon"
+2 -5
View File
@@ -630,12 +630,9 @@ function initConfigModal() {
}); });
} }
// Logout button // Logout button (always visible)
var logoutBtn = document.getElementById("logout-btn"); var logoutBtn = document.getElementById("logout-btn");
if (logoutBtn && AuthManager && AuthManager._authEnabled) { if (logoutBtn) {
// Show if user is logged in
var user = AuthManager.getCurrentUser();
if (user) logoutBtn.style.display = '';
logoutBtn.addEventListener("click", function() { logoutBtn.addEventListener("click", function() {
if (confirm("Voulez-vous vraiment vous deconnecter ?")) { if (confirm("Voulez-vous vraiment vous deconnecter ?")) {
fetch("/api/auth/logout", { method: "POST" }) fetch("/api/auth/logout", { method: "POST" })