import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { z } from 'zod'; import { Link, useNavigate } from 'react-router-dom'; import { useAuth } from '@/client/home/hooks/AuthProvider'; import { toast } from 'sonner'; import { Button } from '@/client/components/ui/button'; import { Input } from '@/client/components/ui/input'; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/client/components/ui/card'; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@/client/components/ui/form'; import { User, Lock } from 'lucide-react'; const loginSchema = z.object({ username: z.string().min(3, '用户名至少3个字符'), password: z.string().min(6, '密码至少6个字符'), }); type LoginFormData = z.infer; const LoginPage: React.FC = () => { const { login } = useAuth(); const navigate = useNavigate(); const form = useForm({ resolver: zodResolver(loginSchema), defaultValues: { username: '', password: '', }, }); const onSubmit = async (data: LoginFormData) => { try { await login(data.username, data.password); toast.success('登录成功!'); navigate('/'); } catch (error) { toast.error(error instanceof Error ? error.message : '登录失败,请检查用户名和密码'); } }; return (
欢迎回来 登录您的账号以继续
( 用户名
)} /> ( 密码
)} />
还没有账号?

测试账号:admin / admin123

); }; export default LoginPage;