blob: e7c8a28014a38369be4a2b20d90a5040e5a19514 [file] [log] [blame]
// /**
// * 字符权限校验
// * @param {Array} value 校验值
// * @returns {Boolean}
// */
export function matchPerms(permissions: string[], value: string[]) {
if (value && value instanceof Array && value.length > 0) {
const permissionDatas = value;
const all_permission = '*:*:*';
const hasPermission = permissions.some((permission) => {
return all_permission === permission || permissionDatas.includes(permission);
});
if (!hasPermission) {
return false;
}
return true;
}
console.error(`need roles! Like checkPermi="['system:user:add','system:user:edit']"`);
return false;
}
export function matchPerm(permissions: string[], value: string) {
if (value && value.length > 0) {
const permissionDatas = value;
const all_permission = '*:*:*';
const hasPermission = permissions.some((permission) => {
return all_permission === permission || permissionDatas === permission;
});
if (!hasPermission) {
return false;
}
return true;
}
console.error(`need roles! Like checkPermi="['system:user:add','system:user:edit']"`);
return false;
}
export function matchPermission(permissions: string[] | undefined, value: any): boolean {
if (permissions === undefined) return false;
const type = typeof value;
if (type === 'string') {
return matchPerm(permissions, value);
}
return matchPerms(permissions, value);
}
/**
* 角色权限校验
* @param {Array} value 校验值
* @returns {Boolean}
*/
export function checkRole(roles: API.System.Role[] | undefined, value: string[]) {
if (roles && value && value.length > 0) {
for (let i = 0; i < roles?.length; i++) {
for (let j = 0; j < value?.length; j++) {
if (value[j] === roles[i].roleKey) {
return true;
}
}
}
}
console.error(`need roles! Like checkRole="['admin','editor']"`);
return false;
}