41 lines
1022 B
TypeScript
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;
|