UNPKG

@10yun/open-sdk

Version:

开放平台接入sdk

72 lines (70 loc) 2.27 kB
import { StorageObj } from '../index.js'; const envArr = import.meta.env; const currSign = envArr.VITE_SY_PRODUCT_SIGN; import { isValidString } from './common.js'; /** * 权限检查方法 * @param {String|Array} value * @return */ function permission_auth(value) { // 判断数据类型 let valueType = Object.prototype.toString.call(value); // 如果 value 不是字符串或数组,直接返回 false if (valueType != '[object String]' && valueType != '[object Array]') { return false; } let rbacStr = StorageObj.localGet('syCacheAppRbac') || ''; // 如果是字符串,直接调用 permission_check if (valueType == '[object String]') { return permission_check(value, rbacStr); } // // 如果是数组,使用 every 方法,遇到第一个 false 就跳出 // if (valueType === '[object Array]') { // return value.every((itemStr) => permission_check(itemStr)); // } // 如果是数组,手动遍历,遇到第一个 false 就跳出 if (valueType === '[object Array]') { for (const itemStr of value) { if (!permission_check(itemStr, rbacStr)) { return false; // 遇到 false 立即跳出 } } return true; // 所有元素都返回 true } // 默认返回 false return false; } function permission_check(perms_key, init_rbac) { // 开发调试 if (envArr.MODE == 'development' && envArr.VITE_APP_DEBUG === 'on') { // console.log(envArr.MODE, envArr.VITE_APP_DEBUG, '----'); // if (!window.__POWERED_BY_QIANKUN__) { return true; // } } perms_key = perms_key || ''; perms_key = perms_key.trim(); if (perms_key == '') { return false; } if (!perms_key.includes('@')) { perms_key = `${currSign}@${perms_key}`; } // 获取权限 let rbacStr = init_rbac || StorageObj.localGet('syCacheAppRbac') || ''; // console.log('---rbacStr---', rbacStr); rbacStr = rbacStr.trim(); // 权限为空 if (!isValidString(rbacStr)) { return false; } // 权限判断-所有权限 if (rbacStr == '"all@all"' || rbacStr == 'all@all') { return true; } // 分割,并且,清理空格 const rbacArr = rbacStr.split(',').map((item) => item.trim()); return rbacArr.includes(perms_key); } export { permission_auth, permission_check };