feat:工具类的迁移
feat:hooks 的迁移(字典、权限) feat:store 的迁移(字典、用户信息)
This commit is contained in:
41
src/hooks/useAccess.ts
Normal file
41
src/hooks/useAccess.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
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
|
||||
Reference in New Issue
Block a user