WEB_logistics/src/AuthContext.jsx
2024-10-07 17:37:57 +05:00

48 lines
1.4 KiB
JavaScript

import React, { createContext, useContext, useState, useEffect } from "react";
const AuthContext = createContext();
export const useAuth = () => {
return useContext(AuthContext);
};
export const AuthProvider = ({ children }) => {
const [isAuthenticated, setIsAuthenticated] = useState(() => {
const savedAuth = localStorage.getItem("isAuthenticated");
return savedAuth === "true";
});
const [role, setRole] = useState(() => {
const savedUser = localStorage.getItem("user");
return savedUser ? JSON.parse(savedUser).role : null;
});
const login = (userData) => {
setIsAuthenticated(true);
setRole(userData.user.role_name);
localStorage.setItem("token", userData.token);
localStorage.setItem("user", JSON.stringify(userData.user));
localStorage.setItem("role", JSON.stringify(userData.user.role_name));
localStorage.setItem("isAuthenticated", true);
};
const logout = () => {
setIsAuthenticated(false);
setRole(null);
localStorage.removeItem("token");
localStorage.removeItem("isAuthenticated");
localStorage.removeItem("user");
localStorage.removeItem("role");
};
useEffect(() => {
localStorage.setItem("isAuthenticated", isAuthenticated);
}, [isAuthenticated]);
return (
<AuthContext.Provider value={{ isAuthenticated, role, login, logout }}>
{children}
</AuthContext.Provider>
);
};