"use client"; import { CircleAlertIcon, UserPlusIcon } from "lucide-react"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { type FormEvent, useState } from "react"; import { Alert, AlertDescription, AlertTitle, } from "@/components/ui/alert"; import { Button, buttonVariants } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from "@/components/ui/card"; import { Field, FieldDescription, FieldGroup, FieldLabel, } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; import { Spinner } from "@/components/ui/spinner"; import { authClient } from "@/lib/auth/client"; function registrationError(code: string | undefined): string { switch (code) { case "ADMIN_REGISTRATION_FORBIDDEN": return "อีเมลนี้ไม่ได้รับอนุญาตให้สร้างบัญชีผู้ดูแล"; case "USER_ALREADY_EXISTS_USE_ANOTHER_EMAIL": return "บัญชีนี้มีอยู่แล้ว โปรดกลับไปเข้าสู่ระบบ"; case "PASSWORD_TOO_SHORT": return "รหัสผ่านต้องมีอย่างน้อย 8 ตัวอักษร"; case "PASSWORD_TOO_LONG": return "รหัสผ่านต้องไม่เกิน 128 ตัวอักษร"; default: return "สร้างบัญชีไม่สำเร็จ โปรดตรวจสอบข้อมูลแล้วลองอีกครั้ง"; } } export function RegisterCard() { const router = useRouter(); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); async function register(event: FormEvent) { event.preventDefault(); setError(null); const formData = new FormData(event.currentTarget); const name = String(formData.get("name") ?? "").trim(); const email = String(formData.get("email") ?? "").trim(); const password = String(formData.get("password") ?? ""); const confirmation = String(formData.get("passwordConfirmation") ?? ""); if (!name) { setError("กรุณากรอกชื่อผู้ดูแล"); return; } if (password !== confirmation) { setError("รหัสผ่านทั้งสองช่องไม่ตรงกัน"); return; } setLoading(true); try { const result = await authClient.signUp.email({ name, email, password, }); if (result.error) { setError(registrationError(result.error.code)); return; } router.push("/admin"); router.refresh(); } catch { setError("เชื่อมต่อระบบลงทะเบียนไม่ได้ โปรดลองอีกครั้ง"); } finally { setLoading(false); } } return ( สร้างบัญชีผู้ดูแล ลงทะเบียนด้วยอีเมลและรหัสผ่านสำหรับ Better Auth
ชื่อผู้ดูแล อีเมล รหัสผ่าน อย่างน้อย 8 ตัวอักษร ยืนยันรหัสผ่าน {error ? ( ) : null}
กลับไปเข้าสู่ระบบ
); }