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