import { useState } from 'react'; import { useRouter } from 'next/router'; import Head from 'next/head'; import Link from 'next/link'; import { toast } from 'react-hot-toast'; import { EyeIcon, EyeSlashIcon } from '@heroicons/react/24/outline'; import { auth } from '@/lib/supabase'; interface LoginForm { email: string; password: string; } export default function Login() { const router = useRouter(); const [form, setForm] = useState({ email: '', password: '', }); const [loading, setLoading] = useState(false); const [showPassword, setShowPassword] = useState(false); const handleInputChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setForm(prev => ({ ...prev, [name]: value })); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!form.email || !form.password) { toast.error('请填写所有必填字段'); return; } setLoading(true); try { // 检查是否为演示模式 const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL; const isDemoMode = !supabaseUrl || supabaseUrl === 'https://demo.supabase.co' || supabaseUrl === ''; if (isDemoMode) { // 演示模式:检查测试账号 if (form.email === 'admin@demo.com' && form.password === 'admin123') { toast.success('登录成功!'); // 在演示模式下直接跳转到仪表盘 router.push('/dashboard'); } else { toast.error('演示模式:请使用测试账号 admin@demo.com / admin123'); } } else { // 真实模式:使用 Supabase 认证 try { await auth.signIn(form.email, form.password); toast.success('登录成功!'); router.push('/dashboard'); } catch (authError: any) { console.error('Supabase auth error:', authError); toast.error(authError.message || '登录失败,请检查邮箱和密码'); } } } catch (error: any) { console.error('Login error:', error); toast.error('登录过程中发生错误,请稍后重试'); } finally { setLoading(false); } }; // 填入测试账号 const fillTestAccount = () => { setForm({ email: 'admin@demo.com', password: 'admin123' }); }; return ( <> 管理员登录 - 口译服务管理后台

管理员登录

口译服务后台管理系统

{/* 测试账号提示 */}

测试账号

邮箱:admin@demo.com

密码:admin123

返回首页
); }