/**
 * 权限工具函数
 * - 基于 RBAC 的权限检查
 * - 按钮级别权限码验证
 * - 角色级别判断
 */

import { useAuthStore } from '@/stores/auth';

/** 角色等级常量 */
export const ROLE_LEVELS = {
  /** 普通用户 */
  NORMAL: 0,
  /** 企业管理员 */
  ORG_ADMIN: 1,
  /** 总管理员 */
  SUPER_ADMIN: 2,
} as const;

/**
 * 检查当前用户是否拥有指定权限码
 *
 * 总管理员（role >= 2）自动拥有全部权限
 * @param code 权限码，如 "device:view"
 */
export function hasPermission(code: string): boolean {
  const user = useAuthStore.getState().user;
  if (!user) return false;

  // 总管理员拥有全部权限
  if (user.role >= ROLE_LEVELS.SUPER_ADMIN) {
    return true;
  }

  return user.permissions.includes(code);
}

/**
 * 批量检查权限 — 全部满足才返回 true
 * @param codes 权限码数组
 */
export function hasAllPermissions(codes: string[]): boolean {
  return codes.every((code) => hasPermission(code));
}

/**
 * 批量检查权限 — 满足任一即返回 true
 * @param codes 权限码数组
 */
export function hasAnyPermission(codes: string[]): boolean {
  return codes.some((code) => hasPermission(code));
}

/**
 * 检查当前用户是否匹配指定角色等级
 * @param level 角色等级（0普通 1企业管理员 2总管理员）
 */
export function hasRole(level: number): boolean {
  const user = useAuthStore.getState().user;
  if (!user) return false;
  return user.role >= level;
}

/**
 * 检查当前用户是否为总管理员
 */
export function isSuperAdmin(): boolean {
  return hasRole(ROLE_LEVELS.SUPER_ADMIN);
}

/**
 * 检查当前用户是否为企业管理员或更高
 */
export function isOrgAdmin(): boolean {
  return hasRole(ROLE_LEVELS.ORG_ADMIN);
}
