ProBusinessEnterprise

Модель прав: 57 разрешений

Принцип работы

Система разрешений evntflo основана на аддитивной модели: итоговые права пользователя -- это объединение (union) разрешений всех назначенных ему ролей. Разрешения только добавляются и никогда не вычитаются.

Пример: если пользователю назначены роли Manager и Finance, он получает все разрешения Manager (события, регистрации, check-in) плюс все разрешения Finance (платежи, отчеты, возвраты).

Три контекста ролей

Каждая роль в evntflo действует в одном из трех контекстов, определяющих область видимости разрешений:

Глобальный контекст

Роли платформенного уровня. Используются для администрирования самой платформы evntflo. Недоступны обычным организаторам.

Тенантный контекст (организация)

Основной контекст для работы команды. Роль действует на уровне всей организации и распространяется на все её события.

Примеры:

  • Admin на уровне организации -- доступ ко всем событиям и настройкам
  • Finance на уровне организации -- просмотр финансов по всем событиям

Событийный контекст

Роль ограничена конкретным мероприятием. Пользователь видит только то событие, к которому привязана его роль.

Примеры:

  • Manager на уровне события -- управление только одним мероприятием
  • Support на уровне события -- check-in только на конкретном мероприятии

Атомарные разрешения

Система содержит 57 атомарных разрешений, сгруппированных по областям:

События

РазрешениеОписание
EVENT_CREATEСоздание нового события
EVENT_UPDATEРедактирование события
EVENT_DELETEУдаление события
EVENT_PUBLISHПубликация события
EVENT_VIEWПросмотр события

Регистрации

РазрешениеОписание
REGISTRATION_VIEWПросмотр списка участников
REGISTRATION_MANAGEПодтверждение, отмена регистраций
REGISTRATION_EXPORTЭкспорт списка участников
CHECKIN_MANAGECheck-in участников

Платежи

РазрешениеОписание
PAYMENT_VIEWПросмотр платежей
PAYMENT_REFUNDИнициирование возвратов
PAYMENT_GATEWAY_MANAGEНастройка платежных шлюзов

Формы

РазрешениеОписание
FORM_CREATEСоздание формы регистрации
FORM_UPDATEРедактирование формы
FORM_DELETEУдаление формы

Команда

РазрешениеОписание
TEAM_INVITEПриглашение в команду
TEAM_REMOVEУдаление из команды
ROLE_ASSIGNНазначение ролей

Уведомления

РазрешениеОписание
NOTIFICATION_SENDРучная рассылка
NOTIFICATION_TEMPLATE_MANAGEРедактирование шаблонов

Отчеты

РазрешениеОписание
REPORT_VIEWПросмотр отчетов
REPORT_EXPORTЭкспорт отчетов

Эксперименты

РазрешениеОписание
EXPERIMENT_MANAGEСоздание и управление A/B-экспериментами (Business+)

Биллинг

РазрешениеОписание
BILLING_MANAGEУправление тарифом и оплатой (только Owner)

Полный перечень из 57 разрешений доступен в разделе Настройки -> Команда -> Разрешения (для тарифов Business и Enterprise).

Временные роли

Вы можете назначить роль с ограниченным сроком действия. Это удобно для:

  • Волонтеров на мероприятии -- роль Support на один или два дня проведения
  • Временных менеджеров -- роль Manager на период подготовки к событию
  • Аудиторов -- роль Finance на время проверки

Как назначить временную роль

  1. Перейдите в Настройки -> Команда.
  2. Выберите члена команды.
  3. При назначении роли включите переключатель Ограничить по времени.
  4. Укажите дату и время окончания действия роли.
  5. Нажмите Сохранить.

После наступления указанного времени роль автоматически деактивируется. Пользователь теряет соответствующие разрешения, но остается членом команды. Запись о временной роли сохраняется в audit log.

Кэширование разрешений

Для обеспечения быстрой проверки прав разрешения кэшируются в Redis:

  • Ключ кэша: perms:{tenantId}:{userId}:{eventId}
  • Время жизни кэша (TTL): 60 секунд
  • При изменении роли кэш инвалидируется автоматически

На практике это означает, что после изменения роли новые права применяются в течение максимум одной минуты. Пользователю не нужно выходить из системы и входить заново.

Проверка разрешений

Организатор может проверить, какие разрешения есть у каждого члена команды:

  1. Перейдите в Настройки -> Команда.
  2. Нажмите на имя участника.
  3. В разделе Эффективные разрешения отображается полный список прав с учетом всех назначенных ролей.

Разрешения, полученные от разных ролей, отмечены соответствующими метками.

Частые вопросы

Что значит аддитивная модель прав?
Это значит, что разрешения только добавляются, никогда не вычитаются. Если у пользователя две роли, его итоговые права -- объединение (union) разрешений обеих ролей. Нельзя назначить роль, которая забирает право, выданное другой ролью.
Как быстро вступают в силу изменения прав?
Разрешения кэшируются в Redis с TTL 60 секунд. После изменения роли пользователя новые права гарантированно применяются в течение одной минуты. Пользователю не нужно выходить и заходить заново.
Что такое временная роль?
Роль с указанным сроком действия (поле expires_at). Например, вы можете назначить волонтеру роль Support на один день мероприятия. После истечения срока роль автоматически деактивируется.