diff --git a/apps/web/src/components/layout/Header.tsx b/apps/web/src/components/layout/Header.tsx index b5fa669d4..4ada9da3d 100644 --- a/apps/web/src/components/layout/Header.tsx +++ b/apps/web/src/components/layout/Header.tsx @@ -39,7 +39,8 @@ export function Header(_props: HeaderProps) { const handleLogout = async () => { setIsUserMenuOpen(false); await logout(); - navigate('/login'); + // Full page redirect ensures clean state after logout + window.location.href = '/login'; }; const toggleTheme = () => { diff --git a/apps/web/src/hooks/useSidebarNavigation.ts b/apps/web/src/hooks/useSidebarNavigation.ts index c4134999a..bcab9ce7e 100644 --- a/apps/web/src/hooks/useSidebarNavigation.ts +++ b/apps/web/src/hooks/useSidebarNavigation.ts @@ -1,5 +1,4 @@ import { useCallback } from 'react'; -import { useNavigate } from 'react-router-dom'; import { useAuthStore } from '@/features/auth/store/authStore'; import { useUIStore } from '@/stores/ui'; @@ -12,7 +11,6 @@ const SIDEBAR_BREAKPOINT = 1024; * - Déconnexion */ export function useSidebarNavigation() { - const navigate = useNavigate(); const { logout } = useAuthStore(); const { setSidebarOpen } = useUIStore(); @@ -22,10 +20,11 @@ export function useSidebarNavigation() { } }, [setSidebarOpen]); - const handleLogout = useCallback(() => { - logout(); - navigate('/login'); - }, [logout, navigate]); + const handleLogout = useCallback(async () => { + await logout(); + // Full page redirect ensures clean state (clears any stale React/Query cache) + window.location.href = '/login'; + }, [logout]); return { handleMobileNav,