"use client"; import { useState, useEffect } from "react"; import { useRouter } from "next/navigation"; import { Card, CardHeader, CardTitle, CardDescription, CardContent, } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; interface Annotator { id: string; displayName: string; } export default function LoginPage() { const router = useRouter(); const [annotators, setAnnotators] = useState([]); const [selectedAnnotator, setSelectedAnnotator] = useState(""); const [password, setPassword] = useState(""); const [error, setError] = useState(""); const [loading, setLoading] = useState(false); useEffect(() => { fetch("/api/auth") .then((res) => res.json()) .then((data: Annotator[]) => setAnnotators(data)) .catch(() => setError("Failed to load annotators")); }, []); async function handleLogin(e: React.FormEvent) { e.preventDefault(); setError(""); if (!selectedAnnotator) { setError("Please select an annotator"); return; } setLoading(true); try { const res = await fetch("/api/auth", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ annotatorId: selectedAnnotator, password, }), }); if (!res.ok) { const data = await res.json(); setError(data.error || "Login failed"); return; } router.push("/dashboard"); } catch { setError("Network error"); } finally { setLoading(false); } } return (
SEC cyBERT Labeling Tool
setPassword(e.target.value)} placeholder="Enter password" />
{error && (

{error}

)}
); }