mirror of
https://gitee.com/lab1024/smart-admin.git
synced 2025-11-22 10:27:01 +08:00
v1.0.4
This commit is contained in:
122
smart-admin-web/src/store/module/user.js
Normal file
122
smart-admin-web/src/store/module/user.js
Normal 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);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user