auditforge / frontend /src /components /ProtectedRoute.tsx
Kaballas's picture
initialize project structure with essential configurations and components
56b6519
import { PropsWithChildren, useEffect, useState } from 'react';
import { useNavigate } from 'react-router-dom';
import { checktoken } from '../hooks/useAuth';
import { useAuth } from './AuthProvider';
type ProtectedRouteProps = PropsWithChildren;
const ProtectedRoute = ({ children }: ProtectedRouteProps) => {
const [loading, setLoading] = useState(true);
const isAuth = useAuth();
const navigate = useNavigate();
useEffect(() => {
const verifyAuth = async () => {
const tokenIsValid = await checktoken();
if (isAuth === false || tokenIsValid === false) {
navigate('/login', { replace: true });
} else {
setLoading(false);
}
};
verifyAuth().catch(console.error);
const intervalId = setInterval(() => {
verifyAuth().catch(console.error);
}, 30000);
return () => clearInterval(intervalId);
}, [isAuth, navigate]);
if (loading) {
return <div>Loading...</div>; // TODO: Agregar loading page
}
return children;
};
export default ProtectedRoute;