blob: 5caee9e8397b82f73f59e4b5bc03948b070bc97b [file] [log] [blame]
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 AdminLoginPage from '../features/auth/pages/AdminLoginPage';
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 PostDetailPage from '../features/forum/pages/PostDetailPage';
import PTPage from '../features/pt/pages/PTPage';
import TorrentListPage from '../features/torrents/pages/TorrentListPage';
import UploadTorrentPage from '../features/torrents/pages/UploadTorrentPage';
import ProfilePage from '../features/profile/pages/ProfilePage';
// 导入路由守卫
import ProtectedRoute from './ProtectedRoute';
import PermissionRoute from './PermissionRoute';
const AppRoutes = () => {
return (
<Routes>
{/* 公共路由 */}
<Route path="/login" element={<LoginPage />} />
<Route path="/admin/login" element={<AdminLoginPage />} />
<Route path="/register" element={<RegisterPage />} />
<Route path="/unauthorized" element={<UnauthorizedPage />} />
<Route path="*" element={<NotFoundPage />} />
{/* 受保护的路由 (需要登录) */}
<Route
path="/"
element={
<ProtectedRoute>
<MainLayout>
<HomePage />
</MainLayout>
</ProtectedRoute>
}
/>
<Route
path="/forum"
element={
<ProtectedRoute>
<MainLayout>
<ForumPage />
</MainLayout>
</ProtectedRoute>
}
/>
<Route
path="/post/:postId"
element={
<ProtectedRoute>
<MainLayout>
<PostDetailPage />
</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="/profile"
element={
<ProtectedRoute>
<MainLayout>
<ProfilePage />
</MainLayout>
</ProtectedRoute>
}
/>
<Route
path="/admin"
element={
<ProtectedRoute>
<PermissionRoute requiredRoles={['admin']}>
<MainLayout>
<AdminPanel />
</MainLayout>
</PermissionRoute>
</ProtectedRoute>
}
/>
</Routes>
);
};
export default AppRoutes;