Skip to content

权限判断

ts
/**
 * 检查用户是否具有特定权限的函数
 * @param nodePermission - 需要检查的权限数组
 * @returns 返回布尔值,表示用户是否具有所需权限
 */
export const hasPermission = (nodePermission: string[]) => {
  // const ALL_PERMISSION = '$#@A_z!'  // 隐藏的测试Code
  const user = store.getters[VuexEvent.GET_CURRENT_USER]; // 获取当前用户信息
  const permissionCode = user?.role?.jurisdiction.name || ""; // 获取用户权限代码,如果不存在则为空字符串
  // 如果是root用户或sysadmin用户,直接返回true
  if (permissionCode === "root" || user?.username === "sysadmin") {
    return true;
  }
  const userPermission = store.getters[VuexEvent.GET_PERMISSIONS] || []; // 获取用户权限列表,如果不存在则为空数组
  let isPermission = false; // 初始化权限检查结果为false
  // 如果需要检查的权限数组存在且长度大于0
  if (nodePermission?.length > 0) {
    // 检查用户权限列表中是否包含所需权限
    isPermission = userPermission.some((role: any) => {
      return nodePermission.includes(role);
    });
  } else {
    // 如果没有需要检查的权限,默认返回true
    isPermission = true;
  }
  return isPermission; // 返回最终的权限检查结果
};