import { HttpError } from "react-admin"; import { login, menus } from "../api/auth"; import { getToken, setToken, removeToken } from '@/utils/token-util'; import avatar from '/avatar.jpg' const AuthProvider = { // login login: async ({ username, password, tenantId }) => { const { accessToken, user } = await login({ username: username, password: password, tenantId: tenantId, }); if (user && accessToken) { const userToPersist = { avatar: avatar, fullName: user.nickname, id: user.id, username: user.username } setToken(accessToken); localStorage.setItem("user", JSON.stringify(userToPersist)); return Promise.resolve(); } return Promise.reject( new HttpError("Unauthorized", 401, { message: "Invalid username or password", }), ); }, // logout logout: () => { localStorage.removeItem("user"); removeToken(); return Promise.resolve(); }, // checkError checkError: () => { return Promise.resolve(); }, // checkAuth checkAuth: () => { const token = getToken(); return token ? Promise.resolve() : Promise.reject(); }, // getPermissions getPermissions: async () => { const token = getToken(); if (!token) { localStorage.removeItem("user"); if (window.location.pathname !== "/login") { } return Promise.reject(); } const res = await menus(); const { code, msg, data } = res.data; if (code === 200) { return Promise.resolve(data); } else if (code === 401) { localStorage.removeItem("user"); return Promise.reject(); } else { return Promise.reject(msg); } }, // getIdentity getIdentity: () => { const persistedUser = localStorage.getItem("user"); const user = persistedUser ? JSON.parse(persistedUser) : null; return Promise.resolve(user); }, }; export default AuthProvider;