aboutsummaryrefslogtreecommitdiff
path: root/web/src/components/auth
diff options
context:
space:
mode:
Diffstat (limited to 'web/src/components/auth')
-rw-r--r--web/src/components/auth/ProtectedRoute.tsx20
1 files changed, 20 insertions, 0 deletions
diff --git a/web/src/components/auth/ProtectedRoute.tsx b/web/src/components/auth/ProtectedRoute.tsx
new file mode 100644
index 0000000..1133d36
--- /dev/null
+++ b/web/src/components/auth/ProtectedRoute.tsx
@@ -0,0 +1,20 @@
+/**
+ * ProtectedRoute.tsx
+ * Redireciona para /login se o usuário não estiver autenticado.
+ */
+
+import { Navigate, useLocation } from 'react-router-dom';
+import { useAuth } from '@/context/AuthContext';
+import type { ReactNode } from 'react';
+
+export function ProtectedRoute({ children }: { children: ReactNode }) {
+ const { isAuthenticated } = useAuth();
+ const location = useLocation();
+
+ if (!isAuthenticated) {
+ // Preserva a rota que o usuário tentou acessar para redirect pós-login
+ return <Navigate to="/login" state={{ from: location }} replace />;
+ }
+
+ return <>{children}</>;
+}