/* * @Author: your name * @Date: 2021-03-05 09:44:53 * @LastEditTime: 2021-04-19 17:32:06 * @LastEditors: Please set LastEditors * @Description: In User Settings Edit * @FilePath: \exclusive-cloud\manage\common\src\assets\authority\authority.ts */ import shared from "../../../../main/src/shared"; import store from "../../../../main/src/shared/store"; import permission from "./permission"; let adminPermission: any = {}; /** * 权限文件 */ let authority: any = {}; let adminModule: any = []; /** * */ function getAuthority(list: any, front: any = undefined) { let type = 'admin'; let newPermission = JSON.stringify(permission.permission) adminPermission = JSON.parse(newPermission); adminModule = []; for (let i in adminPermission) { adminModule.push(i); } if (list === 'superAdmin') { type = list; } else { initPermission(list) } getPermission(type, list); if (front) { front = JSON.parse(front); console.log(front) getFrontPermission(front) } } /** * 解析已有权限 * @param item */ function initPermission(list: any) { for (let i in list) { list[i].permission = JSON.parse(list[i].permission) } } /** * 获取权限子项 * @param type */ function getPermission(type: any, list: any) { for (let i in adminPermission) { let item1 = adminPermission[i].data; if (i !== 'resourceManagement') { for (let j in item1) { let item2 = item1[j].data; for (let k in item2) { if (item2[k].data) { let item3 = item2[k].data authority[item2[k].prop] = {}; for (let l in item3) { matchPermission(item3[l], authority[item2[k].prop], type, list) } } else { matchPermission(item2[k], authority, type, list) } } } } else { authority[i] = {} for (let j in item1) { let item2 = item1[j].data; for (let k in item2) { if (item2[k].data) { let item3 = item2[k].data authority[i][item2[k].prop] = {}; for (let l in item3) { matchPermission(item3[l], authority[i][item2[k].prop], type, list) } } else { matchPermission(item2[k], authority[i], type, list) } } } } } } /** * * @param item * @param authority * @param type * @param list */ function matchPermission(item: any, $authority: any, type: any, list: any) { $authority[item.prop] = type === 'superAdmin' ? true : false; if (type !== 'superAdmin') { for (let i in list) { if (item.id === list[i].id && !list[i].permission.oam) { $authority[item.prop] = true; } } } } function getFrontPermission(front: any) { for (let a in authority) { for (let b in authority[a]) { for (let i in front) { for (let j in front[i]) { if (a === j) { for (let k in front[i][j]) { if (b === k) { authority[a][b] = front[i][j][k] === 1 ? true : false; } } } } } } } } /** * 初始化权限控制 */ function init(Vue: any) { Vue.prototype.$authority = authority; } function set(Vue: any) { } export default { init, // 初始化权限文件 getAuthority, authority, }