新增路由管理

Change-Id: I8139fd09f135c42944f60ca473ee208e69549dc2
diff --git a/Merge/front/src/router/App.js b/Merge/front/src/router/App.js
index d91b3b7..4da6f49 100644
--- a/Merge/front/src/router/App.js
+++ b/Merge/front/src/router/App.js
@@ -1,72 +1,75 @@
-import React from 'react';
-import {
-  Routes,
-  Route,
-  Navigate,
-} from 'react-router-dom';
-import AdminPage from '../components/Admin';
-import UserManagement from '../components/UserManagement';
-import LogsDashboard from '../components/LogsDashboard';
-import SuperAdmin from '../components/SuperAdmin';
+// src/router/index.jsx
+import React from 'react'
+import { Routes, Route, Navigate, Outlet } from 'react-router-dom'
 
-import CreatePost     from '../components/CreatePost'      // src/components/CreatePost.jsx
-import HomeFeed       from '../components/HomeFeed'        // src/components/HomeFeed.jsx
-import PlaceholderPage from '../components/PlaceholderPage'// src/components/PlaceholderPage.jsx
-import UploadPage     from '../components/UploadPage'      // src/components/UploadPage.jsx
+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 UserProfile from '../components/UserProfile'; // src/components/UserProfileRoute.jsx
+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 LoginPage from '../pages/LoginPage/LoginPage';
-import RegisterPage from '../pages/RegisterPage/RegisterPage';
-import ForgotPasswordPage from '../pages/ForgotPasswordPage/ForgotPasswordPage';
-import TestDashboard from '../pages/TestDashboard/TestDashboard';
-
-import TransactionLogs from '../components/TransactionLogs';
-import PerformanceLogs from '../components/PerformanceLogs';
-import NotebookPage    from '../components/NotebookPage'
+import { RequireAuth, RequireRole } from './Guards'
 
 export default function AppRoutes() {
   return (
     <Routes>
-      <Route path="/posts/new" element={<CreatePost />} />
-    
-      <Route path="/home"      element={<HomeFeed />} />
+      {/* ### 公开路由(不用登录就能看) */}
+      <Route path="/login"            element={<LoginPage />} />
+      <Route path="/register"         element={<RegisterPage />} />
+      <Route path="/forgot-password"  element={<ForgotPasswordPage />} />
 
-      <Route path="/notebooks" element={<NotebookPage />} />
-      <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="/user/:userId" element={<UserProfile />} />
-      <Route path="/dashboard/*" element={<UploadPage />} />
+      {/* ### 需要登录才能访问的区域 */}
+      <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" />} />
 
-      {/* 根路径重定向到 dashboard */}
-      {/* <Route path="/" element={<Navigate to="/dashboard/overview" replace />} /> */}
+          <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 path="/" element={<LoginPage />} />
-      <Route path="/login" element={<LoginPage />} />
-      <Route path="/register" element={<RegisterPage />} />
-      <Route path="/forgot-password" element={<ForgotPasswordPage />} />
-      <Route path="/test-dashboard" element={<TestDashboard />} />
+        {/* ---- 管理员区块 ---- */}
+        <Route element={<RequireRole allowedRoles={['admin']} />}>
+          <Route path="/admin" element={<AdminPage />} />
+          <Route path="/test-dashboard" element={<TestDashboard  />} />
+        </Route>
 
-      {/* 普通管理员,无 header */}
-      <Route path="admin" element={<AdminPage />} />
-
-      {/* 超级管理员,只用 SuperAdminLayout */}
-      <Route path="superadmin" element={<SuperAdmin />}>
-        <Route index element={<Navigate to="users" replace />} />
-        <Route path="users" element={<UserManagement superAdminId={3} />} />
-
-        {/* dashboard as layout */}
-        <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 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>
 
-      {/* 最后一个兜底,放在最末尾 */}
-      <Route path="*" element={<PlaceholderPage pageId="home" />} />
+      {/* ### 兜底:不认识的地址都重定向到 /login */}
+      <Route path="*" element={<Navigate to="/login" replace />} />
     </Routes>
-  );
-}
\ No newline at end of file
+  )
+}