"use client"; import { useEffect, useState } from "react"; import { clearAuthCookies } from "@/lib/session"; import Link from "next/link"; export default function LoggedOut() { const [sessionStatus, setSessionStatus] = useState<'checking' | 'cleared' | 'error'>('checking'); // Clear auth cookies again on this page as an extra precaution useEffect(() => { const checkAndClearSessions = async () => { try { // Additional browser storage clearing console.log('Performing complete browser storage cleanup'); // Clear cookies clearAuthCookies(); // Clear session storage try { sessionStorage.clear(); console.log('Session storage cleared'); } catch (e) { console.error('Error clearing session storage:', e); } // Clear local storage items related to auth try { const authLocalStoragePrefixes = ['token', 'auth', 'session', 'keycloak', 'kc', 'oidc', 'user']; for (let i = 0; i < localStorage.length; i++) { const key = localStorage.key(i); if (key) { const keyLower = key.toLowerCase(); if (authLocalStoragePrefixes.some(prefix => keyLower.includes(prefix))) { console.log(`Clearing localStorage: ${key}`); localStorage.removeItem(key); } } } console.log('Local storage auth items cleared'); } catch (e) { console.error('Error clearing localStorage:', e); } // Double check for Keycloak specific cookies const keycloakCookies = ['KEYCLOAK_SESSION', 'KEYCLOAK_IDENTITY', 'KC_RESTART']; for (const cookieName of keycloakCookies) { document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/; domain=${window.location.hostname}; SameSite=None; Secure;`; document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`; } setSessionStatus('cleared'); } catch (error) { console.error('Error during session cleanup:', error); setSessionStatus('error'); } }; checkAndClearSessions(); }, []); return (
Verifying all sessions are terminated...
)} {sessionStatus === 'cleared' && (Your session has been completely terminated and all authentication data has been cleared.
)} {sessionStatus === 'error' && (Your session has been terminated, but there might be some residual session data. For complete security, please close your browser.
)}Note: If you're automatically signed in again, try clearing your browser cookies or restarting your browser.