You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
house/fount/utils/utils.js

40 lines
2.0 KiB

import storage from './storage'; // 导入 storage 工具模块,用于操作本地存储
import menu from './menu'; // 导入 menu 工具模块,用于获取菜单数据
/**
* 是否有权限
* @param {*} tableName 表名,用于匹配菜单中的表名
* @param {*} key 权限按钮名称,用于检查用户是否有该权限
*/
export function isAuth(tableName, key) { // 定义 isAuth 函数,用于检查用户是否有指定权限
let role = storage.get("role"); // 从本地存储中获取当前用户角色
if (!role) { // 如果未获取到角色
role = '管理员'; // 默认设置为“管理员”
}
let menus = menu.list(); // 获取菜单列表数据
for (let i = 0; i < menus.length; i++) { // 遍历菜单列表
if (menus[i].roleName == role) { // 如果当前菜单的角色与用户角色匹配
for (let j = 0; j < menus[i].backMenu.length; j++) { // 遍历后台菜单
for (let k = 0; k < menus[i].backMenu[j].child.length; k++) { // 遍历子菜单
if (tableName == menus[i].backMenu[j].child[k].tableName) { // 如果表名匹配
let buttons = menus[i].backMenu[j].child[k].buttons.join(','); // 将按钮权限数组转为逗号分隔的字符串
return buttons.indexOf(key) !== -1 || false; // 检查权限按钮是否存在于按钮权限字符串中,返回布尔值
}
}
}
}
}
// 注释掉的代码部分:另一种实现方式,逻辑类似
// for(let i=0;i<menus.length;i++){
// if(menus[i].roleName==role){
// for(let j=0;j<menus[i].backMenu.length;j++){
// if(menus[i].backMenu[j].tableName==tableName){
// let buttons = menus[i].backMenu[j].child[0].buttons.join(',');
// return buttons.indexOf(key) !== -1 || false
// }
// }
// }
// }
return false; // 如果未找到匹配的权限,返回 false
}