/**
 * 角色权限校验
 * @param {string[]} value 校验值
 * @returns {Boolean}
 */
export function checkRole(value: string[]): boolean {
  if (value && value instanceof Array && value.length > 0) {
    // 从 localStorage 获取用户信息
    const userInfoStr = localStorage.getItem('userInfo');
    if (!userInfoStr) {
      console.error('用户信息不存在');
      return false;
    }

    try {
      const userInfo = JSON.parse(userInfoStr);
      const permissionRoles = value;
      const super_admin = 'super_admin';
      const roles = userInfo?.roles || [];
      
      const hasRole = roles.some((role: string) => {
        return super_admin === role || permissionRoles.includes(role);
      });
      
      return !!hasRole;
    } catch (error) {
      console.error('解析用户信息失败:', error);
      return false;
    }
  } else {
    console.error('角色权限校验值不能为空');
    return false;
  }
}

/**
 * 字符权限校验（需要配合权限指令使用）
 * 注意：此函数需要配合权限系统使用，如果项目中有权限指令，可以在这里实现
 * @param {string[]} permission 权限标识数组
 * @returns {Boolean}
 */
export function checkPermi(permission: string[]): boolean {
  // TODO: 根据项目的权限系统实现
  // 这里需要从权限信息中检查是否有对应的权限
  const permissionInfoStr = localStorage.getItem('permissionInfo');
  if (!permissionInfoStr) {
    return false;
  }

  try {
    const permissionInfo = JSON.parse(permissionInfoStr);
    const permissions = permissionInfo?.permissions || [];
    
    return permission.some((perm: string) => {
      return permissions.includes(perm);
    });
  } catch (error) {
    console.error('解析权限信息失败:', error);
    return false;
  }
}

