fix: logout supprime access_token cookie + bouton toujours visible
- 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:
@@ -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")
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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" })
|
||||||
|
|||||||
Reference in New Issue
Block a user