"use client"; import { Suspense, useState } from "react"; import { useRouter, useSearchParams } from "next/navigation"; import { Alert, Button, Card, CloseButton, Input, Label, TextField } from "@heroui/react"; import { Fingerprint, Thunderbolt } from "@gravity-ui/icons"; import { authClient } from "@/lib/auth-client"; function LoginForm() { const router = useRouter(); const searchParams = useSearchParams(); const justSetup = searchParams.get("setup") === "1"; const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [error, setError] = useState(""); const [loading, setLoading] = useState(false); const [passkeyLoading, setPasskeyLoading] = useState(false); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(""); setLoading(true); try { const res = await authClient.signIn.username({ username, password, fetchOptions: { credentials: "include" }, }); if (res.error) { setError(res.error.message ?? "登录失败,请检查用户名和密码"); } else { router.push("/dashboard"); router.refresh(); } } catch { setError("网络错误,请稍后重试"); } finally { setLoading(false); } }; const handlePasskey = async () => { setError(""); setPasskeyLoading(true); try { const res = await authClient.signIn.passkey(); if (res?.error) { setError(res.error.message ?? "Passkey 登录失败"); } else { router.push("/dashboard"); router.refresh(); } } catch { setError("Passkey 登录失败,请重试"); } finally { setPasskeyLoading(false); } }; return (
{/* Brand */}

Helios EVCS

电动车充电站管理系统

{justSetup && ( 初始化完成 根管理员账号已创建,请登录。 )} setUsername(e.target.value)} /> setPassword(e.target.value)} /> {error && ( 登录失败 {error} setError("")} /> )}

Helios EVCS

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