blob: 4da6f4957733a8076c910d80218e09f5604bae9e [file] [log] [blame]
// src/router/index.jsx
import React from 'react'
import { Routes, Route, Navigate, Outlet } 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 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 } from './Guards'
export default function AppRoutes() {
return (
<Routes>
{/* ### 公开路由(不用登录就能看) */}
<Route path="/login" element={<LoginPage />} />
<Route path="/register" element={<RegisterPage />} />
<Route path="/forgot-password" element={<ForgotPasswordPage />} />
{/* ### 需要登录才能访问的区域 */}
<Route element={<RequireAuth />}>
{/* ---- 普通用户区块 ---- */}
<Route element={<RequireRole allowedRoles={['user']} />}>
<Route path="/home" element={<HomeFeed />} />
<Route path="/posts/new" element={<CreatePost />} />
<Route path="/notebooks" element={<NotebookPage />} />
<Route path="/user/:userId" element={<UserProfile />} />
<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="/dashboard/*" element={<PlaceholderPage />} />
<Route path="/posts/new" element={<CreatePost />} />
<Route path="/posts/edit/:postId" element={<CreatePost />} />
<Route path="/" element={<Navigate to="/dashboard/overview" replace />} />
</Route>
{/* ---- 管理员区块 ---- */}
<Route element={<RequireRole allowedRoles={['admin']} />}>
<Route path="/admin" element={<AdminPage />} />
<Route path="/test-dashboard" element={<TestDashboard />} />
</Route>
{/* ---- 超级管理员区块 ---- */}
<Route element={<RequireRole allowedRoles={['superadmin']} />}>
<Route path="/superadmin" element={<SuperAdmin />}>
<Route index element={<Navigate to="users" replace />} />
<Route path="users" element={<UserManagement superAdminId={3} />} />
<Route path="dashboard" element={<LogsDashboard />}>
<Route index element={<Navigate to="transactions" replace />} />
<Route path="transactions" element={<TransactionLogs userId={1} />} />
<Route path="performance" element={<PerformanceLogs userId={1} />} />
</Route>
</Route>
</Route>
</Route>
{/* ### 兜底:不认识的地址都重定向到 /login */}
<Route path="*" element={<Navigate to="/login" replace />} />
</Routes>
)
}