blob: 994233b79c940c59394b05cf585707c8283327d0 [file] [log] [blame]
ybtda5978b2025-05-31 15:58:05 +08001import React from 'react';
2import { Routes, Route, Navigate } from 'react-router-dom';
3
4// 导入布局
5import MainLayout from '../layouts/MainLayout';
6
7// 导入页面
8import LoginPage from '../features/auth/pages/LoginPage';
9import RegisterPage from '../features/auth/pages/RegisterPage';
10import AdminPanel from '../features/admin/pages/AdminPanel';
11import NotFoundPage from '../pages/NotFoundPage';
12import UnauthorizedPage from '../pages/UnauthorizedPage';
13
14// 导入新创建的页面组件
15import HomePage from '../features/home/pages/HomePage';
16import ForumPage from '../features/forum/pages/ForumPage';
17import PTPage from '../features/pt/pages/PTPage';
18import TorrentListPage from '../features/torrents/pages/TorrentListPage';
19import UploadTorrentPage from '../features/torrents/pages/UploadTorrentPage';
20import ToolsPage from '../features/tools/pages/ToolsPage';
21import ProfilePage from '../features/profile/pages/ProfilePage';
22
23// 导入路由守卫
24import ProtectedRoute from './ProtectedRoute';
ybt02e716d2025-04-15 17:19:32 +080025import PermissionRoute from './PermissionRoute';
26
ybtda5978b2025-05-31 15:58:05 +080027const AppRoutes = () => {
28 return (
29 <Routes>
30 {/* 公共路由 */}
31 <Route path="/login" element={<LoginPage />} />
32 <Route path="/register" element={<RegisterPage />} />
33 <Route path="/unauthorized" element={<UnauthorizedPage />} />
ybt02e716d2025-04-15 17:19:32 +080034
ybtda5978b2025-05-31 15:58:05 +080035 {/* 受保护的路由 (需要登录) */}
36 <Route
37 path="/"
38 element={
39 <ProtectedRoute>
40 <MainLayout>
41 <HomePage />
42 </MainLayout>
43 </ProtectedRoute>
44 }
45 />
46
47 <Route
48 path="/forum"
49 element={
50 <ProtectedRoute>
51 <MainLayout>
52 <ForumPage />
53 </MainLayout>
54 </ProtectedRoute>
55 }
56 />
57
58 <Route
59 path="/pt"
60 element={
61 <ProtectedRoute>
62 <MainLayout>
63 <PTPage />
64 </MainLayout>
65 </ProtectedRoute>
66 }
67 />
68
69 <Route
70 path="/torrents"
71 element={
72 <ProtectedRoute>
73 <MainLayout>
74 <TorrentListPage />
75 </MainLayout>
76 </ProtectedRoute>
77 }
78 />
79
80 <Route
81 path="/upload"
82 element={
83 <ProtectedRoute>
84 <MainLayout>
85 <UploadTorrentPage />
86 </MainLayout>
87 </ProtectedRoute>
88 }
89 />
90
91 <Route
92 path="/tools"
93 element={
94 <ProtectedRoute>
95 <MainLayout>
96 <ToolsPage />
97 </MainLayout>
98 </ProtectedRoute>
99 }
100 />
101
102 <Route
103 path="/profile"
104 element={
105 <ProtectedRoute>
106 <MainLayout>
107 <ProfilePage />
108 </MainLayout>
109 </ProtectedRoute>
110 }
111 />
112
113 <Route
114 path="/admin"
115 element={
116 <ProtectedRoute>
117 <PermissionRoute requiredRoles={['admin']}>
118 <MainLayout>
119 <AdminPanel />
120 </MainLayout>
121 </PermissionRoute>
122 </ProtectedRoute>
123 }
124 />
125
126 {/* 404 Not Found 路由 */}
127 <Route path="*" element={<MainLayout><NotFoundPage /></MainLayout>} />
128 </Routes>
129 );
130};
131
132export default AppRoutes;