62 lines
1.6 KiB
Plaintext
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 };
|
|
}
|