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
  }
}
