blob: 4da6f4957733a8076c910d80218e09f5604bae9e [file] [log] [blame]
wu2f28f672025-06-19 14:29:30 +08001// src/router/index.jsx
2import React from 'react'
3import { Routes, Route, Navigate, Outlet } from 'react-router-dom'
TRM-codingd1cbf672025-06-18 15:15:08 +08004
wu2f28f672025-06-19 14:29:30 +08005import LoginPage from '../pages/LoginPage/LoginPage'
6import RegisterPage from '../pages/RegisterPage/RegisterPage'
7import ForgotPasswordPage from '../pages/ForgotPasswordPage/ForgotPasswordPage'
8import TestDashboard from '../pages/TestDashboard/TestDashboard'
9import HomeFeed from '../components/HomeFeed'
10import CreatePost from '../components/CreatePost'
11import NotebookPage from '../components/NotebookPage'
12import PlaceholderPage from '../components/PlaceholderPage'
13import UserProfile from '../components/UserProfile'
TRM-codingd1cbf672025-06-18 15:15:08 +080014
wu2f28f672025-06-19 14:29:30 +080015import AdminPage from '../components/Admin'
16import SuperAdmin from '../components/SuperAdmin'
17import UserManagement from '../components/UserManagement'
18import LogsDashboard from '../components/LogsDashboard'
19import TransactionLogs from '../components/TransactionLogs'
20import PerformanceLogs from '../components/PerformanceLogs'
TRM-codingd1cbf672025-06-18 15:15:08 +080021
wu2f28f672025-06-19 14:29:30 +080022import { RequireAuth, RequireRole } from './Guards'
TRM-coding85e5c322025-06-18 19:49:21 +080023
TRM-codingd1cbf672025-06-18 15:15:08 +080024export default function AppRoutes() {
25 return (
26 <Routes>
wu2f28f672025-06-19 14:29:30 +080027 {/* ### 公开路由(不用登录就能看) */}
28 <Route path="/login" element={<LoginPage />} />
29 <Route path="/register" element={<RegisterPage />} />
30 <Route path="/forgot-password" element={<ForgotPasswordPage />} />
TRM-codingd1cbf672025-06-18 15:15:08 +080031
wu2f28f672025-06-19 14:29:30 +080032 {/* ### 需要登录才能访问的区域 */}
33 <Route element={<RequireAuth />}>
34 {/* ---- 普通用户区块 ---- */}
35 <Route element={<RequireRole allowedRoles={['user']} />}>
36 <Route path="/home" element={<HomeFeed />} />
37 <Route path="/posts/new" element={<CreatePost />} />
38 <Route path="/notebooks" element={<NotebookPage />} />
39 <Route path="/user/:userId" element={<UserProfile />} />
40 <Route path="/activity" element={<PlaceholderPage pageId="activity" />} />
41 <Route path="/notes" element={<PlaceholderPage pageId="notes" />} />
42 <Route path="/creator" element={<PlaceholderPage pageId="creator" />} />
43 <Route path="/journal" element={<PlaceholderPage pageId="journal" />} />
TRM-codingd1cbf672025-06-18 15:15:08 +080044
wu2f28f672025-06-19 14:29:30 +080045 <Route path="/dashboard/*" element={<PlaceholderPage />} />
46 <Route path="/posts/new" element={<CreatePost />} />
47 <Route path="/posts/edit/:postId" element={<CreatePost />} />
48 <Route path="/" element={<Navigate to="/dashboard/overview" replace />} />
49 </Route>
TRM-codingc4b4f3d2025-06-18 19:02:46 +080050
wu2f28f672025-06-19 14:29:30 +080051 {/* ---- 管理员区块 ---- */}
52 <Route element={<RequireRole allowedRoles={['admin']} />}>
53 <Route path="/admin" element={<AdminPage />} />
54 <Route path="/test-dashboard" element={<TestDashboard />} />
55 </Route>
TRM-codingd1cbf672025-06-18 15:15:08 +080056
wu2f28f672025-06-19 14:29:30 +080057 {/* ---- 超级管理员区块 ---- */}
58 <Route element={<RequireRole allowedRoles={['superadmin']} />}>
59 <Route path="/superadmin" element={<SuperAdmin />}>
60 <Route index element={<Navigate to="users" replace />} />
61 <Route path="users" element={<UserManagement superAdminId={3} />} />
62 <Route path="dashboard" element={<LogsDashboard />}>
63 <Route index element={<Navigate to="transactions" replace />} />
64 <Route path="transactions" element={<TransactionLogs userId={1} />} />
65 <Route path="performance" element={<PerformanceLogs userId={1} />} />
66 </Route>
67 </Route>
TRM-coding85e5c322025-06-18 19:49:21 +080068 </Route>
TRM-codingd1cbf672025-06-18 15:15:08 +080069 </Route>
TRM-coding85e5c322025-06-18 19:49:21 +080070
wu2f28f672025-06-19 14:29:30 +080071 {/* ### 兜底:不认识的地址都重定向到 /login */}
72 <Route path="*" element={<Navigate to="/login" replace />} />
TRM-codingd1cbf672025-06-18 15:15:08 +080073 </Routes>
wu2f28f672025-06-19 14:29:30 +080074 )
75}