"use client"; import { useState } from "react"; import { useRouter } from "next/navigation"; import { Check } from "lucide-react"; import { apiChangePassword } from "@/lib/api"; /** * 修改密码表单:提交成功后后端已递增 TokenVersion 并清除全部登录 cookie, * 刷新 layout 使 Header 回到游客态,随后跳转登录页重新登录。 */ export default function PasswordForm() { const router = useRouter(); const [oldPassword, setOldPassword] = useState(""); const [newPassword, setNewPassword] = useState(""); const [confirmPassword, setConfirmPassword] = useState(""); const [submitting, setSubmitting] = useState(false); const [error, setError] = useState(""); const [success, setSuccess] = useState(false); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(""); if (newPassword.length < 6) { setError("新密码至少 6 位"); return; } if (newPassword !== confirmPassword) { setError("两次输入的新密码不一致"); return; } setSubmitting(true); try { const res = await apiChangePassword(oldPassword, newPassword); if (res.message) { setSuccess(true); router.refresh(); setTimeout(() => router.push("/login"), 1500); } else { setError(res.error || "修改失败"); } } catch { setError("网络错误,请重试"); } finally { setSubmitting(false); } }; return (
); }