fix: 完善用户路由和注册回调

- App.tsx 导入 hasValidUserSession 修复 TS 编译错误
- UserRegister 增加 onLogin 回调,注册成功自动跳转
This commit is contained in:
boos
2026-05-19 02:47:23 +08:00
parent d432ded68f
commit 499dba6104
2 changed files with 8 additions and 3 deletions
+6 -2
View File
@@ -5,7 +5,7 @@ import SearchModal from './components/SearchModal.js';
import NotificationPanel from './components/NotificationPanel.js'; import NotificationPanel from './components/NotificationPanel.js';
import TooltipLayer from './components/TooltipLayer.js'; import TooltipLayer from './components/TooltipLayer.js';
import { api } from './api.js'; import { api } from './api.js';
import { clearAuthSession, hasValidAuthSession, persistAuthSession } from './authSession.js'; import { clearAuthSession, hasValidAuthSession, hasValidUserSession, persistAuthSession } from './authSession.js';
import { import {
FIRST_USE_DOC_REMINDER_KEY, FIRST_USE_DOC_REMINDER_KEY,
LEGACY_THEME_STORAGE_KEY, LEGACY_THEME_STORAGE_KEY,
@@ -735,6 +735,10 @@ function AppShell() {
const isUserPage = location.pathname.startsWith('/user/'); const isUserPage = location.pathname.startsWith('/user/');
const isPublicUserPage = ['/user/login', '/user/register'].includes(location.pathname); const isPublicUserPage = ['/user/login', '/user/register'].includes(location.pathname);
if (isUserPage && isPublicUserPage && userAuthed) {
return <Navigate to="/user/dashboard" />;
}
if (!authed && !isUserPage) { if (!authed && !isUserPage) {
return <Login t={t} onLogin={(token) => { return <Login t={t} onLogin={(token) => {
persistAuthSession(localStorage, token); persistAuthSession(localStorage, token);
@@ -751,7 +755,7 @@ function AppShell() {
<Suspense fallback={<RouteLoadingFallback />}> <Suspense fallback={<RouteLoadingFallback />}>
<Routes> <Routes>
<Route path="/user/login" element={<UserLogin onLogin={() => setUserAuthed(true)} />} /> <Route path="/user/login" element={<UserLogin onLogin={() => setUserAuthed(true)} />} />
<Route path="/user/register" element={<UserRegister />} /> <Route path="/user/register" element={<UserRegister onLogin={() => setUserAuthed(true)} />} />
</Routes> </Routes>
</Suspense> </Suspense>
); );
+2 -1
View File
@@ -2,7 +2,7 @@ import React, { useState } from 'react';
import { useNavigate, Link } from 'react-router-dom'; import { useNavigate, Link } from 'react-router-dom';
import { persistUserSession } from '../authSession.js'; import { persistUserSession } from '../authSession.js';
export default function UserRegister() { export default function UserRegister({ onLogin }: { onLogin?: () => void }) {
const navigate = useNavigate(); const navigate = useNavigate();
const [username, setUsername] = useState(''); const [username, setUsername] = useState('');
const [email, setEmail] = useState(''); const [email, setEmail] = useState('');
@@ -36,6 +36,7 @@ export default function UserRegister() {
} }
const result = await res.json(); const result = await res.json();
persistUserSession(localStorage, result.token); persistUserSession(localStorage, result.token);
onLogin?.();
navigate('/user/dashboard'); navigate('/user/dashboard');
} catch (err: any) { } catch (err: any) {
setError(err?.message || '注册失败'); setError(err?.message || '注册失败');