"use client"; import { useRef, useState, type FormEvent } from "react"; import { Alert, AlertDescription } from "@/components/ui/alert"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"; import { Field, FieldGroup, FieldLabel } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; import { authClient } from "@/lib/auth/client"; export function PasswordForm() { const formRef = useRef(null); const [busy, setBusy] = useState(false); const [error, setError] = useState(""); const [success, setSuccess] = useState(false); async function changePassword(event: FormEvent) { event.preventDefault(); if (busy) return; const form = new FormData(event.currentTarget); const currentPassword = String(form.get("currentPassword") ?? ""); const newPassword = String(form.get("newPassword") ?? ""); const confirmPassword = String(form.get("confirmPassword") ?? ""); setError(""); setSuccess(false); if (newPassword !== confirmPassword) { setError("รหัสผ่านใหม่ไม่ตรงกัน"); return; } setBusy(true); try { const result = await authClient.changePassword({ currentPassword, newPassword }); if (result.error) { setError(result.error.code === "INVALID_PASSWORD" ? "รหัสผ่านปัจจุบันไม่ถูกต้อง" : "เปลี่ยนรหัสผ่านไม่สำเร็จ กรุณาลองอีกครั้ง"); return; } formRef.current?.reset(); setSuccess(true); } catch { setError("เปลี่ยนรหัสผ่านไม่สำเร็จ กรุณาลองอีกครั้ง"); } finally { setBusy(false); } } return เปลี่ยนรหัสผ่าน กรอกรหัสผ่านปัจจุบันและรหัสผ่านใหม่
รหัสผ่านปัจจุบัน รหัสผ่านใหม่ ยืนยันรหัสผ่านใหม่ {error && {error}} {success && เปลี่ยนรหัสผ่านเรียบร้อยแล้ว}
; }