// Уровни доступа
export const ROLES = {
  USER: 'user',
  CRITIC: 'critic',
  MODERATOR: 'moderator',
  ADMIN: 'admin'
};

// Проверка роли пользователя
export const hasRole = (user, role) => {
  if (!user) return false;
  return user.role === role;
};

// Проверка минимального уровня доступа
export const hasMinRole = (user, minRole) => {
  if (!user) return false;
  
  const roleHierarchy = {
    [ROLES.USER]: 0,
    [ROLES.CRITIC]: 1,
    [ROLES.MODERATOR]: 2,
    [ROLES.ADMIN]: 3
  };

  return roleHierarchy[user.role] >= roleHierarchy[minRole];
};

// Проверка прав на управление медиа
export const canManageMedia = (user) => {
  return hasMinRole(user, ROLES.CRITIC);
};

// Проверка прав на управление пользователями
export const canManageUsers = (user) => {
  return hasMinRole(user, ROLES.MODERATOR);
};

// Проверка прав на управление системой
export const canManageSystem = (user) => {
  return hasMinRole(user, ROLES.ADMIN);
};

// Проверка прав на модерирование контента
export const canModerateContent = (user) => {
  return hasMinRole(user, ROLES.MODERATOR);
};

// Проверка прав на создание рецензий
export const canCreateReviews = (user) => {
  return hasMinRole(user, ROLES.USER);
};

// Проверка прав на управление сезонами
export const canManageSeasons = (user) => {
  return hasMinRole(user, ROLES.CRITIC);
};

// Проверка прав на управление достижениями
export const canManageAchievements = (user) => {
  return hasMinRole(user, ROLES.MODERATOR);
};

// Проверка прав на управление предложениями
export const canManageSuggestions = (user) => {
  return hasMinRole(user, ROLES.MODERATOR);
};

// Проверка прав на управление поддержкой
export const canManageSupport = (user) => {
  return hasMinRole(user, ROLES.MODERATOR);
}; 