"use client"; import { Suspense } from "react"; import { useState } from "react"; import { useSearchParams, useRouter } from "next/navigation"; import { signIn } from "next-auth/react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; function BindForm() { const searchParams = useSearchParams(); const router = useRouter(); const keycloakId = searchParams.get("keycloakId") || ""; const keycloakEmail = searchParams.get("email") || ""; const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [error, setError] = useState(""); async function handleSubmit(e: React.FormEvent) { e.preventDefault(); setError(""); const res = await fetch("/api/proxy/auth/bind-keycloak", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ username, password, keycloakId, keycloakEmail, }), }); if (!res.ok) { const data = await res.json(); setError(data.error || "绑定失败"); return; } const data = await res.json(); if (data.bound) { await signIn("keycloak", { callbackUrl: "/dashboard" }); } } return ( 绑定本地账号

您的 Keycloak 账号({keycloakEmail || keycloakId})尚未绑定本地账户。 请输入已有的本地账号密码完成绑定。

setUsername(e.target.value)} required />
setPassword(e.target.value)} required />
{error &&

{error}

}
); } export default function BindAccountPage() { return (
加载中...
}> ); }