import { useState } from 'react'; import { useNavigate } from 'react-router'; import { useAuth } from '../hooks/AuthProvider'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { z } from 'zod'; import { toast } from 'sonner'; import { Eye, EyeOff, User, Lock } from 'lucide-react'; import { Button } from '@/client/components/ui/button'; 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 { Input } from '@/client/components/ui/input'; // 表单验证Schema const loginSchema = z.object({ username: z.string().min(1, '请输入用户名'), password: z.string().min(1, '请输入密码'), }); type LoginFormData = z.infer; // 登录页面 export const LoginPage = () => { const { login } = useAuth(); const [isLoading, setIsLoading] = useState(false); const [showPassword, setShowPassword] = useState(false); const navigate = useNavigate(); const form = useForm({ resolver: zodResolver(loginSchema), defaultValues: { username: '', password: '', }, }); const handleSubmit = async (data: LoginFormData) => { try { setIsLoading(true); await login(data.username, data.password); // 登录成功后跳转到管理后台首页 navigate('/admin/dashboard'); toast.success('登录成功!欢迎回来'); } catch (error: any) { toast.error(error instanceof Error ? error.message : '登录失败'); } finally { setIsLoading(false); } }; return (

管理后台登录

请输入您的账号和密码继续操作

欢迎登录 使用您的账户信息登录系统
( 用户名
)} /> ( 密码
)} />
测试账号: admin / admin123
© {new Date().getFullYear()} 管理系统. 保留所有权利.

遇到问题?联系管理员

); };