From 00b8a645d0d3d56ead35e02a4b5c2f85148c66c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=95=9C=EB=8F=99=ED=98=84?= <hando1220@ajou.ac.kr> Date: Tue, 13 May 2025 16:22:14 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EB=A6=AC=EB=8B=A4=EC=9D=B4=EB=A0=89?= =?UTF-8?q?=EC=85=98=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/ProtectedRoute.tsx | 12 ++++++++++ src/routes.tsx | 39 +++++++++++++++++-------------- 2 files changed, 34 insertions(+), 17 deletions(-) create mode 100644 src/components/ProtectedRoute.tsx diff --git a/src/components/ProtectedRoute.tsx b/src/components/ProtectedRoute.tsx new file mode 100644 index 0000000..a2f8148 --- /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 87f2197..487b019 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> -- GitLab