blob: e7c8a28014a38369be4a2b20d90a5040e5a19514 [file] [log] [blame]
86133aaa3f5d2025-04-20 21:33:29 +08001// /**
2// * 字符权限校验
3// * @param {Array} value 校验值
4// * @returns {Boolean}
5// */
6export function matchPerms(permissions: string[], value: string[]) {
7 if (value && value instanceof Array && value.length > 0) {
8 const permissionDatas = value;
9 const all_permission = '*:*:*';
10 const hasPermission = permissions.some((permission) => {
11 return all_permission === permission || permissionDatas.includes(permission);
12 });
13 if (!hasPermission) {
14 return false;
15 }
16 return true;
17 }
18 console.error(`need roles! Like checkPermi="['system:user:add','system:user:edit']"`);
19 return false;
20}
21
22export function matchPerm(permissions: string[], value: string) {
23 if (value && value.length > 0) {
24 const permissionDatas = value;
25 const all_permission = '*:*:*';
26 const hasPermission = permissions.some((permission) => {
27 return all_permission === permission || permissionDatas === permission;
28 });
29 if (!hasPermission) {
30 return false;
31 }
32 return true;
33 }
34 console.error(`need roles! Like checkPermi="['system:user:add','system:user:edit']"`);
35 return false;
36}
37
38export function matchPermission(permissions: string[] | undefined, value: any): boolean {
39 if (permissions === undefined) return false;
40 const type = typeof value;
41 if (type === 'string') {
42 return matchPerm(permissions, value);
43 }
44 return matchPerms(permissions, value);
45}
46
47/**
48 * 角色权限校验
49 * @param {Array} value 校验值
50 * @returns {Boolean}
51 */
52export function checkRole(roles: API.System.Role[] | undefined, value: string[]) {
53 if (roles && value && value.length > 0) {
54 for (let i = 0; i < roles?.length; i++) {
55 for (let j = 0; j < value?.length; j++) {
56 if (value[j] === roles[i].roleKey) {
57 return true;
58 }
59 }
60 }
61 }
62 console.error(`need roles! Like checkRole="['admin','editor']"`);
63 return false;
64}