'use client'; import { useState } from 'react'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { motion } from 'framer-motion'; import { Lock, Shield, CheckCircle, AlertTriangle } from 'lucide-react'; import { Card, CardHeader, CardTitle, CardDescription, CardContent, Button, Input, Alert, } from '@/components/ui'; import { useAuthStore } from '@/lib/store'; import { changePasswordSchema, ChangePasswordFormData } from '@/lib/validations'; export default function SettingsPage() { const { changePassword, error, clearError, isLoading } = useAuthStore(); const [success, setSuccess] = useState(false); const { register, handleSubmit, reset, formState: { errors }, } = useForm({ resolver: zodResolver(changePasswordSchema), }); const onSubmit = async (data: ChangePasswordFormData) => { setSuccess(false); try { await changePassword(data.currentPassword, data.newPassword); setSuccess(true); reset(); setTimeout(() => setSuccess(false), 5000); } catch { // 错误已在 store 中处理 } }; return (
{/* 页面标题 */}

账户设置

管理您的账户安全设置

{/* 修改密码 */}
修改密码 定期更换密码可以提高账户安全性
{/* 提示信息 */} {error && ( {error} )} {success && ( 密码修改成功,请使用新密码重新登录 )}
} error={errors.currentPassword?.message} autoComplete="current-password" /> } error={errors.newPassword?.message} hint="8-128 位,需包含大小写字母和数字" autoComplete="new-password" /> } error={errors.confirmPassword?.message} autoComplete="new-password" />
{/* 安全提示 */}

安全提示

  • 请勿将密码分享给他人或在公共场所输入
  • 建议使用包含字母、数字和特殊字符的强密码
  • 如发现账户异常,请立即修改密码
); }