diff --git a/src/components/ProtectedRoute.tsx b/src/components/ProtectedRoute.tsx new file mode 100644 index 0000000000000000000000000000000000000000..a2f8148baf700ee4d0c35363d909d1618a052141 --- /dev/null +++ b/src/components/ProtectedRoute.tsx @@ -0,0 +1,12 @@ +import { Navigate, Outlet } from 'react-router'; +import { useAuthStore } from '@/stores/authStore'; + +export default function ProtectedRoute() { + const { token } = useAuthStore(); + + if (!token) { + return <Navigate to="/login" replace />; + } + + return <Outlet />; +} diff --git a/src/routes.tsx b/src/routes.tsx index 87f219750a91a317c8913f51b45e26bfcf263be8..487b0193404624fa08b4b8491dc6038c41beb2c7 100644 --- a/src/routes.tsx +++ b/src/routes.tsx @@ -1,4 +1,5 @@ import { Routes, Route } from 'react-router'; +import ProtectedRoute from '@/components/ProtectedRoute'; import Root from '@/pages/Root'; import NotFound from '@/pages/NotFound'; import Home from '@/pages/Home'; @@ -17,25 +18,29 @@ export default function AppRoutes() { return ( <Routes> <Route path="/" element={<Root />}> - <Route index element={<Home />} /> <Route path="login" element={<Login />} /> - <Route path="routing"> - <Route index element={<RoutingList />} /> - <Route path="create" element={<RoutingCreate />} /> - <Route path="edit/:id" element={<RoutingEdit />} /> - </Route> - <Route path="certificate"> - <Route index element={<CertificateList />} /> - <Route path="create" element={<CertificateCreate />} /> - </Route> - <Route path="forwarding"> - <Route index element={<ForwardingList />} /> - <Route path="create" element={<ForwardingCreate />} /> - <Route path="edit/:id" element={<ForwardingEdit />} /> - </Route> - <Route path="log"> - <Route index element={<LogList />} /> + + <Route element={<ProtectedRoute />}> + <Route index element={<Home />} /> + <Route path="routing"> + <Route index element={<RoutingList />} /> + <Route path="create" element={<RoutingCreate />} /> + <Route path="edit/:id" element={<RoutingEdit />} /> + </Route> + <Route path="certificate"> + <Route index element={<CertificateList />} /> + <Route path="create" element={<CertificateCreate />} /> + </Route> + <Route path="forwarding"> + <Route index element={<ForwardingList />} /> + <Route path="create" element={<ForwardingCreate />} /> + <Route path="edit/:id" element={<ForwardingEdit />} /> + </Route> + <Route path="log"> + <Route index element={<LogList />} /> + </Route> </Route> + <Route path="*" element={<NotFound />} /> </Route> </Routes>