import {useState, type FormEvent} from "react"; import {useNavigate} from "react-router-dom"; import {toast} from "sonner"; import {useAuth} from "@/auth"; import {ApiError} from "@/api"; import {Button} from "@/components/ui/button"; import {Input} from "@/components/ui/input"; import {Label} from "@/components/ui/label"; import {Card, CardHeader, CardTitle, CardDescription, CardContent} from "@/components/ui/card"; export function LoginPage() { const {login} = useAuth(); const navigate = useNavigate(); const [form, setForm] = useState({login: "admin", password: ""}); const [busy, setBusy] = useState(false); const submit = async (e: FormEvent) => { e.preventDefault(); setBusy(true); try { const user = await login(form.login, form.password); if (user.role !== "admin") { toast.error("Administrators only"); return; } navigate("/news"); } catch (err) { const msg = err instanceof ApiError ? (err.body?.message ?? "Failed to sign in") : "Network unavailable"; toast.error(msg); } finally { setBusy(false); } }; return (
Admin sign in __PROJECT_NAME__
setForm({...form, login: e.target.value})} />
setForm({...form, password: e.target.value})} />
); }