diff --git a/components/Layout.tsx b/components/Layout.tsx index fc9ee08..2c230a7 100644 --- a/components/Layout.tsx +++ b/components/Layout.tsx @@ -30,8 +30,8 @@ export const Layout: React.FC<{ children: React.ReactNode }> = ({ children }) => const fetchCurrentUser = async () => { const storedUserId = localStorage.getItem('ctms_user_id'); - if (!storedUserId) { - navigate('/login'); + if (!storedUserId || storedUserId === 'undefined' || storedUserId === 'null') { + navigate('/login', { replace: true }); return; } @@ -42,11 +42,13 @@ export const Layout: React.FC<{ children: React.ReactNode }> = ({ children }) => } else { // User ID exists in storage but not in DB (deleted user?) localStorage.removeItem('ctms_user_id'); - navigate('/login'); + localStorage.removeItem('ctms_tenant_id'); + navigate('/login', { replace: true }); } } catch (err) { console.error("Failed to fetch user:", err); - // Fallback or error state + // If API fails completely, we might want to allow offline mode or retry + // For now, let's just log it. } }; fetchCurrentUser(); @@ -55,13 +57,15 @@ export const Layout: React.FC<{ children: React.ReactNode }> = ({ children }) => const handleLogout = () => { localStorage.removeItem('ctms_user_id'); localStorage.removeItem('ctms_tenant_id'); - navigate('/login'); + navigate('/login', { replace: true }); }; if (!currentUser) { const storedUserId = localStorage.getItem('ctms_user_id'); - if (!storedUserId) return null; // Will redirect in useEffect - return