"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})尚未绑定本地账户。
请输入已有的本地账号密码完成绑定。