import { useUserStore } from '@/store/modules/user' /** * 权限判断组合式函数 * 用于在 setup 函数或表格 formatter 中判断权限 * * 用法: * const { hasAuth, hasAllAuth } = useAuth() * hasAuth('role:add') // 检查是否拥有权限 * hasAuth(['role:add', 'role:edit']) // 检查是否拥有任意一个权限 * hasAllAuth(['role:add', 'role:edit']) // 检查是否拥有全部权限 */ export const useAuth = () => { const userStore = useUserStore() /** * 检查是否有指定权限(满足任意一个即可) * @param permission 权限标识,可以是字符串或字符串数组 * @returns 是否有权限 */ const hasAuth = (permission: string | string[]): boolean => { if (!permission) return false if (typeof permission === 'string') { // 单个权限(同时检查 permissions 和 buttons) return userStore.hasPermission(permission) || userStore.hasButton(permission) } if (Array.isArray(permission)) { // 多个权限(满足任意一个即可) return permission.some((perm) => userStore.hasPermission(perm) || userStore.hasButton(perm)) } return false } /** * 检查是否有所有指定权限(需要全部满足) * @param permissions 权限标识数组 * @returns 是否有全部权限 */ const hasAllAuth = (permissions: string[]): boolean => { if (!permissions || !Array.isArray(permissions)) return false // 需要全部满足 return permissions.every((perm) => userStore.hasPermission(perm) || userStore.hasButton(perm)) } return { hasAuth, hasAllAuth } }