import { login, getInfo, logout } from "@/api/login"; import { getToken, setToken, removeToken } from "@/utils/auth"; const user = { state: { token: getToken(), user: {}, roles: [], // 第一次加载菜单时用到 loadMenus: false }, mutations: { // 是否为手动退出登录 SD_LOGOUT: (state, f) => { state.sdLogout = f; }, SET_TOKEN: (state, token) => { state.token = token; }, SET_USER: (state, user) => { state.user = user; }, SET_ROLES: (state, roles) => { state.roles = roles; }, SET_LOAD_MENUS: (state, loadMenus) => { state.loadMenus = loadMenus; } }, actions: { // 登录 Login({ commit }, userInfo) { const rememberMe = userInfo.rememberMe; return new Promise((resolve, reject) => { login(userInfo) .then(res => { // console.log('登录成功后返回===', res) localStorage.setItem("logoutHandle", false); localStorage.setItem("shopId", res.shopId); localStorage.setItem("shopName", res.shopName); localStorage.setItem("logo", res.logo); localStorage.setItem("loginType", res.loginType); localStorage.setItem("userInfo", JSON.stringify(res.user.user)); localStorage.setItem("mainId", res.mainId); localStorage.setItem("expireDate", res.expireDate); setToken(res.token, rememberMe); commit("SET_TOKEN", res.token); setUserInfo(res.user, commit); // 第一次加载菜单时用到, 具体见 src 目录下的 permission.js commit("SET_LOAD_MENUS", true); resolve(); }) .catch(error => { reject(error); }); }); }, // 获取用户信息 GetInfo({ commit }) { return new Promise((resolve, reject) => { getInfo() .then(res => { setUserInfo(res, commit); resolve(res); }) .catch(error => { reject(error); }); }); }, // 登出 LogOut({ commit }) { return new Promise((resolve, reject) => { logout() .then(res => { logOut(commit); resolve(); }) .catch(error => { logOut(commit); reject(error); }); }); }, updateLoadMenus({ commit }) { return new Promise((resolve, reject) => { commit("SET_LOAD_MENUS", false); }); } } }; export const logOut = commit => { commit("SET_TOKEN", ""); commit("SET_ROLES", []); removeToken(); }; export const setUserInfo = (res, commit) => { // 如果没有任何权限,则赋予一个默认的权限,避免请求死循环 if (res.roles.length === 0) { commit("SET_ROLES", ["ROLE_SYSTEM_DEFAULT"]); } else { commit("SET_ROLES", res.roles); } commit("SET_USER", res.user); }; export default user;