'use client'; import Link from 'next/link'; import { useRouter, useSearchParams } from 'next/navigation'; import { Suspense, useEffect, useState } from 'react'; import { safeReturnPath } from '@/lib/navigation/safe-return'; import { useAuthStore } from '@/stores/auth-store'; function LoginForm() { const router = useRouter(); const searchParams = useSearchParams(); const accessToken = useAuthStore((s) => s.accessToken); const login = useAuthStore((s) => s.login); const [mounted, setMounted] = useState(false); const [user, setUser] = useState(''); const [pass, setPass] = useState(''); const [tenant, setTenant] = useState(''); const [err, setErr] = useState(null); const [loading, setLoading] = useState(false); useEffect(() => { setMounted(true); }, []); useEffect(() => { if (!mounted || !accessToken) { return; } const next = safeReturnPath(searchParams.get('from'), '/dashboard'); router.replace(next); }, [mounted, accessToken, router, searchParams]); if (!mounted) { return (
加载中…
); } if (accessToken) { return (
正在进入后台…
); } async function onSubmit(e: React.FormEvent) { e.preventDefault(); setErr(null); setLoading(true); try { await login(user, pass, tenant || undefined); const next = safeReturnPath(searchParams.get('from'), '/dashboard'); router.replace(next); } catch (ex) { setErr(ex instanceof Error ? ex.message : String(ex)); } finally { setLoading(false); } } return (

登录

{err ?

{err}

: null}
返回首页
); } export default function LoginPage() { return ( 加载中… } > ); }