usePermission.ts 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { useUserStore } from '@/store/modules/user';
  2. export function usePermission() {
  3. const userStore = useUserStore();
  4. /**
  5. * 检查权限
  6. * @param accesses
  7. */
  8. function _somePermissions(accesses: string[]) {
  9. return userStore.getPermissions.some((item) => {
  10. const { value }: any = item;
  11. return accesses.includes(value);
  12. });
  13. }
  14. /**
  15. * 判断是否存在权限
  16. * 可用于 v-if 显示逻辑
  17. * */
  18. function hasPermission(accesses: string[]): boolean {
  19. if (!accesses || !accesses.length) return true;
  20. return _somePermissions(accesses);
  21. }
  22. /**
  23. * 是否包含指定的所有权限
  24. * @param accesses
  25. */
  26. function hasEveryPermission(accesses: string[]): boolean {
  27. const permissionsList = userStore.getPermissions;
  28. if (Array.isArray(accesses)) {
  29. return permissionsList.every((access: any) => accesses.includes(access.value));
  30. }
  31. throw new Error(`[hasEveryPermission]: ${accesses} should be a array !`);
  32. }
  33. /**
  34. * 是否包含其中某个权限
  35. * @param accesses
  36. * @param accessMap
  37. */
  38. function hasSomePermission(accesses: string[]): boolean {
  39. const permissionsList = userStore.getPermissions;
  40. if (Array.isArray(accesses)) {
  41. return permissionsList.some((access: any) => accesses.includes(access.value));
  42. }
  43. throw new Error(`[hasSomePermission]: ${accesses} should be a array !`);
  44. }
  45. return { hasPermission, hasEveryPermission, hasSomePermission };
  46. }