From 004b8a12df8ab9e25be38e674f943456d4ff096d Mon Sep 17 00:00:00 2001 From: Azmog <80716388+AzmogEx@users.noreply.github.com> Date: Fri, 19 Jun 2026 15:45:59 +0200 Subject: [PATCH] =?UTF-8?q?fix(web):=20corrige=20la=20boucle=20de=20redire?= =?UTF-8?q?ction=20infinie=20sur=20token=20expir=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sur 401, l'intercepteur n'effaçait que le token localStorage mais pas le cookie cesizen-auth lu par le middleware -> /connexion redirigeait vers /dashboard à l'infini quand le JWT (60 min) expirait. On purge désormais aussi le cookie et l'état Zustand persisté avant de rediriger. Co-Authored-By: Claude Opus 4.8 (1M context) --- frontend/src/lib/api.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts index 23f6702..f988a0d 100644 --- a/frontend/src/lib/api.ts +++ b/frontend/src/lib/api.ts @@ -31,7 +31,13 @@ api.interceptors.response.use( typeof window !== 'undefined' && !window.location.pathname.includes('/connexion') ) { + // Purge COMPLÈTE de l'auth pour éviter une boucle de redirection : + // le middleware lit le cookie `cesizen-auth` (état Zustand persisté) ; + // si on ne vide que le localStorage du token, il croit l'utilisateur + // encore connecté et renvoie /connexion -> /dashboard à l'infini. localStorage.removeItem('cesizen_token'); + localStorage.removeItem('cesizen-auth'); // état Zustand persisté + document.cookie = 'cesizen-auth=;path=/;max-age=0;SameSite=Lax'; window.location.href = '/connexion'; } return Promise.reject(error);