feat(auth): 实现登录注册功能并重构 App 组件
- 新增登录和注册页面组件
- 实现用户认证和权限管理逻辑
- 重构 App 组件,使用 Router 和 AuthProvider
- 添加管理员面板和论坛页面组件
Change-Id: Iaa4502616970e75e3268537f73c75dac8f60e24d
diff --git a/src/routes/index.jsx b/src/routes/index.jsx
index 66e5838..994233b 100644
--- a/src/routes/index.jsx
+++ b/src/routes/index.jsx
@@ -1,48 +1,132 @@
-import { createBrowserRouter } from 'react-router-dom';
-import App from '../App';
-import Login from '../pages/Login';
-import Register from '../pages/Register';
-import NotFound from '../pages/NotFound';
-import Unauthorized from '../pages/Unauthorized';
-import AdminPanel from '../pages/AdminPanel';
-import ProtectedRoute from './protectedroute';
+import React from 'react';
+import { Routes, Route, Navigate } from 'react-router-dom';
+
+// 导入布局
+import MainLayout from '../layouts/MainLayout';
+
+// 导入页面
+import LoginPage from '../features/auth/pages/LoginPage';
+import RegisterPage from '../features/auth/pages/RegisterPage';
+import AdminPanel from '../features/admin/pages/AdminPanel';
+import NotFoundPage from '../pages/NotFoundPage';
+import UnauthorizedPage from '../pages/UnauthorizedPage';
+
+// 导入新创建的页面组件
+import HomePage from '../features/home/pages/HomePage';
+import ForumPage from '../features/forum/pages/ForumPage';
+import PTPage from '../features/pt/pages/PTPage';
+import TorrentListPage from '../features/torrents/pages/TorrentListPage';
+import UploadTorrentPage from '../features/torrents/pages/UploadTorrentPage';
+import ToolsPage from '../features/tools/pages/ToolsPage';
+import ProfilePage from '../features/profile/pages/ProfilePage';
+
+// 导入路由守卫
+import ProtectedRoute from './ProtectedRoute';
import PermissionRoute from './PermissionRoute';
-const router = createBrowserRouter([
- {
- path: '/',
- element: (
- <ProtectedRoute>
- <App />
- </ProtectedRoute>
- ),
- },
- {
- path: '/login',
- element: <Login />,
- },
- {
- path: '/register',
- element: <Register />,
- },
- {
- path: '/unauthorized',
- element: <Unauthorized />,
- },
- {
- path: '/admin',
- element: (
- <ProtectedRoute>
- <PermissionRoute requiredRoles={['admin']}>
- <AdminPanel />
- </PermissionRoute>
- </ProtectedRoute>
- ),
- },
- {
- path: '*',
- element: <NotFound />,
- },
-]);
+const AppRoutes = () => {
+ return (
+ <Routes>
+ {/* 公共路由 */}
+ <Route path="/login" element={<LoginPage />} />
+ <Route path="/register" element={<RegisterPage />} />
+ <Route path="/unauthorized" element={<UnauthorizedPage />} />
-export default router;
\ No newline at end of file
+ {/* 受保护的路由 (需要登录) */}
+ <Route
+ path="/"
+ element={
+ <ProtectedRoute>
+ <MainLayout>
+ <HomePage />
+ </MainLayout>
+ </ProtectedRoute>
+ }
+ />
+
+ <Route
+ path="/forum"
+ element={
+ <ProtectedRoute>
+ <MainLayout>
+ <ForumPage />
+ </MainLayout>
+ </ProtectedRoute>
+ }
+ />
+
+ <Route
+ path="/pt"
+ element={
+ <ProtectedRoute>
+ <MainLayout>
+ <PTPage />
+ </MainLayout>
+ </ProtectedRoute>
+ }
+ />
+
+ <Route
+ path="/torrents"
+ element={
+ <ProtectedRoute>
+ <MainLayout>
+ <TorrentListPage />
+ </MainLayout>
+ </ProtectedRoute>
+ }
+ />
+
+ <Route
+ path="/upload"
+ element={
+ <ProtectedRoute>
+ <MainLayout>
+ <UploadTorrentPage />
+ </MainLayout>
+ </ProtectedRoute>
+ }
+ />
+
+ <Route
+ path="/tools"
+ element={
+ <ProtectedRoute>
+ <MainLayout>
+ <ToolsPage />
+ </MainLayout>
+ </ProtectedRoute>
+ }
+ />
+
+ <Route
+ path="/profile"
+ element={
+ <ProtectedRoute>
+ <MainLayout>
+ <ProfilePage />
+ </MainLayout>
+ </ProtectedRoute>
+ }
+ />
+
+ <Route
+ path="/admin"
+ element={
+ <ProtectedRoute>
+ <PermissionRoute requiredRoles={['admin']}>
+ <MainLayout>
+ <AdminPanel />
+ </MainLayout>
+ </PermissionRoute>
+ </ProtectedRoute>
+ }
+ />
+
+ {/* 404 Not Found 路由 */}
+ <Route path="*" element={<MainLayout><NotFoundPage /></MainLayout>} />
+ </Routes>
+ );
+};
+
+export default AppRoutes;
\ No newline at end of file