import React, { useState } from 'react'; import { useAuth } from '../contexts/AuthContext'; import { useLanguage } from '../contexts/LanguageContext'; import { t } from '../i18n/translations'; import { Header } from './Header'; export function LoginPage() { const { language } = useLanguage(); const { login, verifyOTP } = useAuth(); const [step, setStep] = useState<'login' | 'otp'>('login'); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [otpCode, setOtpCode] = useState(''); const [userID, setUserID] = useState(''); const [error, setError] = useState(''); const [loading, setLoading] = useState(false); const handleLogin = async (e: React.FormEvent) => { e.preventDefault(); setError(''); setLoading(true); const result = await login(email, password); if (result.success) { if (result.requiresOTP && result.userID) { setUserID(result.userID); setStep('otp'); } } else { setError(result.message || t('loginFailed', language)); } setLoading(false); }; const handleOTPVerify = async (e: React.FormEvent) => { e.preventDefault(); setError(''); setLoading(true); const result = await verifyOTP(userID, otpCode); if (!result.success) { setError(result.message || t('verificationFailed', language)); } // 成功的话AuthContext会自动处理登录状态 setLoading(false); }; return (
{step === 'login' ? t('loginTitle', language) : t('enterOTPCode', language)}
{t('noAccount', language)}{' '}