'use client'; import { useEffect, useState } from 'react'; type Session = { id: string; device_name: string | null; created_at: string; expires_at: string; current: boolean }; export function SessionManager() { const [sessions, setSessions] = useState([]); const [message, setMessage] = useState(''); async function load() { const response = await fetch('/api/account/sessions', { cache: 'no-store' }); if (response.ok) setSessions(await response.json()); } useEffect(() => { void load(); }, []); async function revoke(id: string) { const response = await fetch(`/api/account/sessions/${id}`, { method: 'DELETE' }); if (response.ok) { setMessage('Session revoked.'); await load(); } } async function logoutAll() { const response = await fetch('/api/account/sessions', { method: 'POST' }); if (response.ok) { setMessage('All sessions revoked.'); await load(); } } return

Sessions

{sessions.length ? sessions.map((session) =>
{session.device_name ?? 'Unnamed device'} {session.current && '(this device)'}

Created {new Date(session.created_at).toLocaleString()}

{!session.current && }
) :

No active sessions.

}{message &&

{message}

}
; }