31 lines
1023 B
TypeScript
31 lines
1023 B
TypeScript
// 封装权限公用方法
|
|
import { useUserStore } from "@/store";
|
|
|
|
|
|
/**
|
|
* 使用: import { usePermission } from "@/utils/permission";
|
|
* 示例: const { checkPermission } = usePermission();
|
|
* checkPermission('permission1') OR checkPermission(['permission1', 'permission2'])
|
|
*
|
|
* */
|
|
export const usePermission = () => {
|
|
const appStore = useUserStore();
|
|
const checkPermission = (requiredPermissions: string | string[]):boolean => {
|
|
// 通过接口获取到的用户权限数据
|
|
const userPermissions = appStore.role;
|
|
const permissionArray = Array.isArray(requiredPermissions) ? requiredPermissions : [requiredPermissions];
|
|
|
|
// 为*跳过权限校验
|
|
const isSkipCheck = requiredPermissions === "*" || (permissionArray && permissionArray.includes("*"));
|
|
if (isSkipCheck) {return true;}
|
|
|
|
const hasPermission = permissionArray.some((permission) =>
|
|
userPermissions.includes(permission)
|
|
);
|
|
|
|
return hasPermission;
|
|
};
|
|
return { checkPermission };
|
|
};
|
|
|