This commit is contained in:
zhuoda
2020-01-11 09:10:29 +08:00
parent e55e1b2f33
commit 215556f73a
608 changed files with 7 additions and 3 deletions

View File

@@ -0,0 +1,122 @@
import cookie from '@/lib/cookie.js';
import { loginApi } from '@/api/login';
import { localSave, localRead } from '@/lib/local';
import { getType } from '@/lib/util';
import { PRIVILEGE_TYPE_ENUM } from '@/constants/privilege';
const localReadRouterPrivilege = () => {
let map = new Map();
let userRouterPrivilegeString = localRead('userRouterPrivilege');
if (userRouterPrivilegeString) {
let privilegeList = JSON.parse(userRouterPrivilegeString);
if (privilegeList) {
for (const path of privilegeList) {
let key = path.substr(1, 1);
let pathArray = map.get(key);
if (pathArray) {
pathArray.push(path);
} else {
pathArray = [];
pathArray.push(path);
map.set(key, pathArray);
}
}
}
}
return map;
};
export default {
state: {
token: cookie.getToken(),
// session信息
userLoginInfo: {},
isUpdatePrivilege: false,
// key为router name, value为 key的集合,用于v-privilege页面功能点判断
privilegeFunctionPointsMap: new Map(),
// 菜单key权限集合用于左侧是否有菜单权限判断
privilegeMenuKeyList: [],
/**
* key为 router path的首字母value为集合
* 这样做是为了提高查询效率用于vue-router拦截判断path
*/
privilegeRouterPathMap: localReadRouterPrivilege()
},
mutations: {
// 设置token
setToken (state, token) {
state.token = token;
cookie.setToken(token);
},
// 保存用户登录信息
setUserLoginInfo (state, userLoginInfo) {
state.userLoginInfo = userLoginInfo;
localSave('userLoginInfo', JSON.stringify(userLoginInfo));
},
setUserPrivilege (state, privilegeList) {
state.isUpdatePrivilege = true;
let routerPathArray = [];
for (const privilege of privilegeList) {
// 是菜单权限
if (privilege.type === PRIVILEGE_TYPE_ENUM.MENU.value) {
state.privilegeMenuKeyList.push(privilege.key);
if (privilege.url) {
routerPathArray.push(privilege.url);
// 去掉/之后第一个字母
let key = privilege.url.substr(1, 1);
let pathArray = state.privilegeRouterPathMap.get(key);
if (pathArray) {
pathArray.push(privilege.url);
} else {
pathArray = [];
pathArray.push(privilege.url);
state.privilegeRouterPathMap.set(key, pathArray);
}
}
}
// 如果是功能点
if (privilege.type === PRIVILEGE_TYPE_ENUM.POINTS.value) {
if (privilege.parentKey) {
let pointArray = state.privilegeFunctionPointsMap.get(privilege.parentKey);
if (pointArray) {
pointArray.push(privilege.key);
} else {
pointArray = [];
pointArray.push(privilege.key);
state.privilegeFunctionPointsMap.set(privilege.parentKey, pointArray);
}
}
}
}
localSave('userRouterPrivilege', JSON.stringify(routerPathArray));
}
},
getters: {
// 用户功能点权限
userFuncPrivilegeInfo: () => localRead('funcPrivilegeInfo'),
// 用户菜单权限
userMenuPrivilege: state => state.userLoginInfo.privilegeList
},
actions: {
// 登录
handleLogin ({ commit }, params) {
params.loginName = params.loginName.trim();
return new Promise((resolve, reject) => {
loginApi
.login(params)
.then(res => {
localStorage.clear();
const data = res.data;
commit('setToken', data.xaccessToken);
// 保存用户登录
commit('setUserLoginInfo', data);
resolve();
})
.catch(err => {
reject(err);
});
});
}
}
};