30 lines
735 B
JavaScript
30 lines
735 B
JavaScript
import React, { createContext, useState, useEffect } from 'react'
|
|
|
|
export const AuthContext = createContext()
|
|
|
|
export const AuthProvider = ({ children }) => {
|
|
const [user, setUser] = useState(null)
|
|
const [token, setToken] = useState(localStorage.getItem('token'))
|
|
const [loading, setLoading] = useState(false)
|
|
|
|
useEffect(() => {
|
|
if (token) {
|
|
localStorage.setItem('token', token)
|
|
} else {
|
|
localStorage.removeItem('token')
|
|
}
|
|
}, [token])
|
|
|
|
const logout = () => {
|
|
setUser(null)
|
|
setToken(null)
|
|
localStorage.removeItem('token')
|
|
}
|
|
|
|
return (
|
|
<AuthContext.Provider value={{ user, setUser, token, setToken, loading, setLoading, logout }}>
|
|
{children}
|
|
</AuthContext.Provider>
|
|
)
|
|
}
|