Files
aiot-uniapp/src/hooks/useAccess.ts
YunaiV 75cf29263b feat:工具类的迁移
feat:hooks 的迁移(字典、权限)
feat:store 的迁移(字典、用户信息)
2025-12-12 19:15:49 +08:00

42 lines
1.2 KiB
TypeScript

import { useUserStore } from '@/store/user'
/**
* 权限控制 Hook
* @description 提供基于角色和权限码的权限判断方法
*/
function useAccess() {
const userStore = useUserStore()
/**
* 基于角色判断是否有权限
* @description 通过用户的角色列表判断是否具有指定角色
* @param roles 需要判断的角色列表
* @returns 是否具有指定角色中的任意一个
*/
function hasAccessByRoles(roles: string[]): boolean {
const userRoleSet = new Set(userStore.roles)
const intersection = roles.filter(item => userRoleSet.has(item))
return intersection.length > 0
}
/**
* 基于权限码判断是否有权限
* @description 通过用户的权限码列表判断是否具有指定权限
* @param codes 需要判断的权限码列表
* @returns 是否具有指定权限码中的任意一个
*/
function hasAccessByCodes(codes: string[]): boolean {
const userCodesSet = new Set(userStore.permissions)
const intersection = codes.filter(item => userCodesSet.has(item))
return intersection.length > 0
}
return {
hasAccessByCodes,
hasAccessByRoles,
}
}
export { useAccess }
export default useAccess