| // src/router/index.jsx |
| import React from 'react' |
| import { Routes, Route, Navigate } from 'react-router-dom' |
| |
| import LoginPage from '../pages/LoginPage/LoginPage' |
| import RegisterPage from '../pages/RegisterPage/RegisterPage' |
| import ForgotPasswordPage from '../pages/ForgotPasswordPage/ForgotPasswordPage' |
| import TestDashboard from '../pages/TestDashboard/TestDashboard' |
| |
| import HomeFeed from '../components/HomeFeed' |
| import CreatePost from '../components/CreatePost' |
| import NotebookPage from '../components/NotebookPage' |
| import PlaceholderPage from '../components/PlaceholderPage' |
| import UserProfile from '../components/UserProfile' |
| import PostDetailJWLLL from '../components/PostDetailJWLLL' |
| import UploadPageJWLLL from '../components/UploadPageJWLLL' |
| |
| import AdminPage from '../components/Admin' |
| import SuperAdmin from '../components/SuperAdmin' |
| import UserManagement from '../components/UserManagement' |
| import LogsDashboard from '../components/LogsDashboard' |
| import TransactionLogs from '../components/TransactionLogs' |
| import PerformanceLogs from '../components/PerformanceLogs' |
| |
| import { |
| RequireAuth, |
| RequireRole, |
| RequireOwnProfile, |
| RequireAdminOwn, |
| RequireSuperAdminOwn |
| } from './Guards' |
| |
| export default function AppRoutes() { |
| return ( |
| <Routes> |
| {/* 1. 公开路由 */} |
| <Route path="/login" element={<LoginPage />} /> |
| <Route path="/register" element={<RegisterPage />} /> |
| <Route path="/forgot-password" element={<ForgotPasswordPage />} /> |
| |
| {/* 2. 受保护路由 */} |
| <Route element={<RequireAuth />}> |
| {/* 2.1 任何登录用户都能看自己的主页 */} |
| <Route element={<RequireOwnProfile />}> |
| <Route path="/user/:userId" element={<UserProfile />} /> |
| </Route> {/* 2.2 普通用户 */} |
| <Route element={<RequireRole allowedRoles={['user']} />}> |
| <Route path="/home" element={<HomeFeed />} /> |
| <Route path="/post/:id" element={<PostDetailJWLLL />} /> |
| <Route path="/posts/new" element={<CreatePost />} /> |
| <Route path="/posts/edit/:postId" element={<CreatePost />} /> |
| <Route path="/upload-jwlll" element={<UploadPageJWLLL />} /> |
| <Route path="/notebooks" element={<NotebookPage />} /> |
| <Route path="/dashboard/*" element={<PlaceholderPage />} /> |
| <Route path="/activity" element={<PlaceholderPage pageId="activity" />} /> |
| <Route path="/notes" element={<PlaceholderPage pageId="notes" />} /> |
| <Route path="/creator" element={<PlaceholderPage pageId="creator" />} /> |
| <Route path="/journal" element={<PlaceholderPage pageId="journal" />} /> |
| <Route path="/" element={<Navigate to="/home" replace />} /> |
| </Route> |
| |
| {/* 2.3 Admin 自己的页面 */} |
| <Route element={<RequireAdminOwn />}> |
| <Route path="/admin/:userId" element={<AdminPage />} /> |
| </Route> |
| <Route element={<RequireRole allowedRoles={['admin']} />}> |
| <Route path="/test-dashboard" element={<TestDashboard />} /> |
| </Route> |
| |
| {/* 2.4 SuperAdmin 自己的区域 */} |
| <Route element={<RequireSuperAdminOwn />}> |
| <Route path="/superadmin/:userId/*" element={<SuperAdmin />}> |
| <Route index element={<Navigate to="users" replace />} /> |
| <Route path="users" element={<UserManagement />} /> |
| <Route path="dashboard" element={<LogsDashboard />}> |
| <Route index element={<Navigate to="transactions" replace />} /> |
| <Route path="transactions" element={<TransactionLogs />} /> |
| <Route path="performance" element={<PerformanceLogs />} /> |
| </Route> |
| </Route> |
| </Route> |
| </Route> |
| |
| {/* 3. 兜底:未匹配一律回登录 */} |
| <Route path="*" element={<Navigate to="/login" replace />} /> |
| </Routes> |
| ) |
| } |