import { createContext, useState, useEffect } from 'react'; import Cookies from "universal-cookie"; import api from '../utils/api'; const cookies = new Cookies(); export const UserContext = createContext(); function UserContextProvider(props) { const [user, setUser] = useState(null); const [isAuth, setIsAuth] = useState(false); const [loginLoading, setLoginLoading] = useState(false); const [messageLogin, setMessageLogin] = useState(""); useEffect(() => { const newUser = cookies.get('user'); if (newUser != undefined) { setIsAuth(true); setUser(newUser); } }, []); useEffect(() => { if (isAuth) { setMessageLogin('

Erreur: Vous devez être déconnecter avant de vous connecter.

'); } else { setMessageLogin(""); } }, [isAuth]); const logoutUser = () => { cookies.remove('user', { path: '/' }); setUser(null); setIsAuth(false); } const loginUser = ({ email, password }) => { setLoginLoading(true); return new Promise(async (next) => { try { const response = await api.post('/users/login', { email, password }); const newUser = response.data; cookies.remove('user', { path: '/' }); cookies.set('user', newUser, { path: '/', maxAge: newUser.expiresIn }); setUser(newUser); setIsAuth(true); setMessageLogin('

Succès: Connexion réussi!

'); setLoginLoading(false); return next(); } catch (error) { setMessageLogin(`

Erreur: ${error.response.data.message}

`); setLoginLoading(false); setIsAuth(false); setUser(null); return next(); } }); } return ( {props.children} ); } export default UserContextProvider;