fusero-app-boilerplate/frontend/src/components/AuthWrapper.tsx
2025-04-30 17:34:49 +02:00

41 lines
1022 B
TypeScript

import { useLocation, useNavigate } from 'react-router-dom';
import { getExpirationDateFromToken, useAuth } from '../hooks/useAuth';
import { useEffect } from 'react';
const AuthWrapper = ({ children }) => {
const location = useLocation();
const navigate = useNavigate();
const { logout } = useAuth();
useEffect(() => {
const user = localStorage.getItem('user');
const isLoginPage = location.pathname === '/login';
if (!user && !isLoginPage) {
navigate('/', { replace: true });
}
checkUserToken();
}, [location.pathname, navigate]);
const checkUserToken = () => {
const user = localStorage.getItem('user');
if (!user) return navigate('/');
const parsedUser = JSON.parse(user);
if (parsedUser) {
let expiredDate = getExpirationDateFromToken(parsedUser.token);
const currentDate = new Date();
if (expiredDate < currentDate) {
logout();
navigate('/');
}
}
};
return <>{children}</>;
};
export default AuthWrapper;