wms-antdvue/.svn/pristine/21/21f312970d5b356b5ae48c8c8eb1832267d95ece.svn-base
2024-11-07 16:33:03 +08:00

62 lines
1.6 KiB
Plaintext

import { useUserStore } from '@/store/modules/user';
export function usePermission() {
const userStore = useUserStore();
/**
* 检查权限
* @param accesses
*/
function _somePermissions(accesses: string[]) {
const permissionsList = userStore.getPermissions;
if(permissionsList[0]=='*:*:*') {
return true
}
return accesses.some((item) => {
return permissionsList.includes(item);
});
}
/**
* 判断是否存在权限
* 可用于 v-if 显示逻辑
* */
function hasPermission(accesses: string[]): boolean {
if (!accesses || !accesses.length) return true;
return _somePermissions(accesses);
}
/**
* 是否包含指定的所有权限
* @param accesses
*/
function hasEveryPermission(accesses: string[]): boolean {
const permissionsList = userStore.getPermissions;
if(permissionsList[0]=='*:*:*') {
return true
}
if (Array.isArray(accesses)) {
return accesses.every((access: any) => permissionsList.includes(access));
}
throw new Error(`[hasEveryPermission]: ${accesses} should be a array !`);
}
/**
* 是否包含其中某个权限
* @param accesses
* @param accessMap
*/
function hasSomePermission(accesses: string[]): boolean {
const permissionsList = userStore.getPermissions;
if(permissionsList[0]=='*:*:*') {
return true
}
if (Array.isArray(accesses)) {
return accesses.some((access: any) => permissionsList.includes(access));
}
throw new Error(`[hasSomePermission]: ${accesses} should be a array !`);
}
return { hasPermission, hasEveryPermission, hasSomePermission };
}