/* eslint-disable @typescript-eslint/no-explicit-any */ 'use client'; import { useRouter, useSearchParams } from 'next/navigation'; import { Suspense, useState } from 'react'; import { useSite } from '@/components/SiteProvider'; import { ThemeToggle } from '@/components/ThemeToggle'; function LoginPageClient() { const router = useRouter(); const searchParams = useSearchParams(); const [password, setPassword] = useState(''); const [username, setUsername] = useState(''); const [error, setError] = useState(null); const [loading, setLoading] = useState(false); const { siteName } = useSite(); // 当 STORAGE_TYPE 不为空且不为 localstorage 时,要求输入用户名 const shouldAskUsername = typeof window !== 'undefined' && (window as any).RUNTIME_CONFIG?.STORAGE_TYPE && (window as any).RUNTIME_CONFIG?.STORAGE_TYPE !== 'localstorage'; // 是否允许注册 const enableRegister = typeof window !== 'undefined' && Boolean((window as any).RUNTIME_CONFIG?.ENABLE_REGISTER); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(null); if (!password || (shouldAskUsername && !username)) return; try { setLoading(true); const res = await fetch('/api/login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ password, ...(shouldAskUsername ? { username } : {}), }), }); if (res.ok) { const redirect = searchParams.get('redirect') || '/'; router.replace(redirect); } else if (res.status === 401) { setError('密码错误'); } else { const data = await res.json().catch(() => ({})); setError(data.error ?? '服务器错误'); } } catch (error) { setError('网络错误,请稍后重试'); } finally { setLoading(false); } }; // 处理注册逻辑 const handleRegister = async () => { setError(null); if (!password || !username) return; try { setLoading(true); const res = await fetch('/api/register', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ username, password }), }); if (res.ok) { const redirect = searchParams.get('redirect') || '/'; router.replace(redirect); } else { const data = await res.json().catch(() => ({})); setError(data.error ?? '服务器错误'); } } catch (error) { setError('网络错误,请稍后重试'); } finally { setLoading(false); } }; return (

{siteName}

{shouldAskUsername && (
setUsername(e.target.value)} />
)}
setPassword(e.target.value)} />
{error && (

{error}

)} {/* 登录 / 注册按钮 */} {shouldAskUsername && enableRegister ? (
) : ( )}
); } export default function LoginPage() { return ( Loading...}> ); }