diff --git a/client/src/contexts/UserContext.js b/client/src/contexts/UserContext.js index 3c3f7d7..5baf70c 100644 --- a/client/src/contexts/UserContext.js +++ b/client/src/contexts/UserContext.js @@ -1,4 +1,5 @@ import { createContext, useContext, useEffect, useState } from 'react'; +import { useNavigate } from 'react-router-dom'; import { remember } from 'services/userServices'; @@ -7,12 +8,17 @@ const initialUserData = { loading: true }; const UserContext = createContext(); export default function UserProvider({ children }) { - const [userData, setUserData] = useState(initialUserData); + const [userData, setUserData] = useState(initialUserData) + const navigate = useNavigate(); + + + useEffect(() => { const loadUserData = async () => { - const { user } = await remember(); - setUserData(user || { loading: false }); + const { user, error } = await remember(); + if (error) navigate('/users/login') + else setUserData(user || { loading: false }); }; if (userData.loading) loadUserData(); }, [userData.loading]); diff --git a/client/src/services/userServices.js b/client/src/services/userServices.js index f7f05ac..08006b4 100644 --- a/client/src/services/userServices.js +++ b/client/src/services/userServices.js @@ -53,7 +53,15 @@ const updateUser = async (data) => callUsersAPI('patch', ``, data); const register = async (data) => callUsersAPI('post', ``, data); -const remember = async () => callUsersAPI('get', `/remember`); +const remember = async () => { + if (Cookies.get('token')) { + const { user, error } = await callUsersAPI('get', `/remember`); + if (user) + return { user }; + Cookies.remove('token'); + return { error } + } +} const requestReset = async (data) => callUsersAPI('post', `/reset`, data);