import { USER_ROLE } from '../constants';
import { ROLE_DEFINITIONS } from '../data';
import { Permission, UserRole } from '../types';

export function hasPermission(userRole: UserRole, requiredPermission: Permission): boolean {
  if (userRole === USER_ROLE.SUPER_ADMIN) {
    return true;
  }

  const roleDefinition = ROLE_DEFINITIONS.find((def) => def.role === userRole);

  return roleDefinition ? roleDefinition.permissions.includes(requiredPermission) : false;
}

export function hasAnyPermission(userRole: UserRole, requiredPermissions: Permission[]): boolean {
  return requiredPermissions.some((perm) => hasPermission(userRole, perm));
}

export function hasAllPermissions(userRole: UserRole, requiredPermissions: Permission[]): boolean {
  return requiredPermissions.every((perm) => hasPermission(userRole, perm));
}
