From 8b17a175c3e7e27b789812eba4e3cd760beadb10 Mon Sep 17 00:00:00 2001
From: soryu <soryu@soryu.co>
Date: Tue, 6 Jan 2026 04:08:11 +0000
Subject: Initial Control system

---
 makima/frontend/src/components/ProtectedRoute.tsx | 26 +++++++++++++++++++++++
 1 file changed, 26 insertions(+)
 create mode 100644 makima/frontend/src/components/ProtectedRoute.tsx

(limited to 'makima/frontend/src/components/ProtectedRoute.tsx')

diff --git a/makima/frontend/src/components/ProtectedRoute.tsx b/makima/frontend/src/components/ProtectedRoute.tsx
new file mode 100644
index 0000000..32ac592
--- /dev/null
+++ b/makima/frontend/src/components/ProtectedRoute.tsx
@@ -0,0 +1,26 @@
+import { Navigate } from "react-router";
+import { useAuth } from "../contexts/AuthContext";
+
+interface ProtectedRouteProps {
+  children: React.ReactNode;
+}
+
+export function ProtectedRoute({ children }: ProtectedRouteProps) {
+  const { isAuthenticated, isLoading, isAuthConfigured } = useAuth();
+
+  // Show loading state while checking auth
+  if (isLoading) {
+    return (
+      <div className="min-h-screen bg-black text-white flex items-center justify-center">
+        <div className="text-zinc-400">Loading...</div>
+      </div>
+    );
+  }
+
+  // If auth is configured but user is not authenticated, redirect to login
+  if (isAuthConfigured && !isAuthenticated) {
+    return <Navigate to="/login" replace />;
+  }
+
+  return <>{children}</>;
+}
-- 
cgit v1.2.3

