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 { code, msg, data } = await login({
|
username: username,
|
password: password,
|
tenantId: tenantId,
|
})
|
|
if (code === 200) {
|
const { accessToken, user, tenant } = data;
|
if (user && accessToken) {
|
const userToPersist = {
|
avatar: avatar,
|
fullName: user.nickname,
|
id: user.id,
|
username: user.username,
|
tenant: tenant,
|
}
|
setToken(accessToken);
|
localStorage.setItem("user", JSON.stringify(userToPersist));
|
return Promise.resolve();
|
}
|
}
|
|
return Promise.reject({ code, msg, data });
|
},
|
// 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;
|