'use client'; import { useRouter, useSearchParams } from 'next/navigation'; import { Suspense, useEffect, useState } from 'react'; import { useAuth } from '../_lib/auth-context'; import { useSuperAdmin } from '../_lib/super-admin-context'; function LoginForm() { const router = useRouter(); const searchParams = useSearchParams(); const { refresh } = useAuth(); const { admin: superAdmin, loading: superLoading } = useSuperAdmin(); const next = searchParams.get('next') ?? '/'; const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [submitting, setSubmitting] = useState(false); const [error, setError] = useState(null); const [redirecting, setRedirecting] = useState(false); useEffect(() => { if (!superLoading && superAdmin) { setRedirecting(true); router.replace('/admin'); } }, [superAdmin, superLoading, router]); if (superLoading) { return
; } if (redirecting) { return

Redirecting to admin panel…

; } async function onSubmit(e: React.FormEvent) { e.preventDefault(); setSubmitting(true); setError(null); try { const res = await fetch('/api/auth/login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email, password }), credentials: 'include', }); if (!res.ok) { const data = await res.json().catch(() => ({})); setError(data?.message ?? 'Invalid email or password'); return; } await refresh(); router.push(next); router.refresh(); } catch (err) { setError(err instanceof Error ? err.message : 'Network error'); } finally { setSubmitting(false); } } return (
{error &&

{error}

}
); } export default function LoginPage() { return (

Sign in

TOWER administrative console

}>

New here?{' '} Create a community

); }