Принцип работы
Система разрешений 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_MANAGE | Check-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 на время проверки
Как назначить временную роль
- Перейдите в Настройки -> Команда.
- Выберите члена команды.
- При назначении роли включите переключатель Ограничить по времени.
- Укажите дату и время окончания действия роли.
- Нажмите Сохранить.
После наступления указанного времени роль автоматически деактивируется. Пользователь теряет соответствующие разрешения, но остается членом команды. Запись о временной роли сохраняется в audit log.
Кэширование разрешений
Для обеспечения быстрой проверки прав разрешения кэшируются в Redis:
- Ключ кэша:
perms:{tenantId}:{userId}:{eventId} - Время жизни кэша (TTL): 60 секунд
- При изменении роли кэш инвалидируется автоматически
На практике это означает, что после изменения роли новые права применяются в течение максимум одной минуты. Пользователю не нужно выходить из системы и входить заново.
Проверка разрешений
Организатор может проверить, какие разрешения есть у каждого члена команды:
- Перейдите в Настройки -> Команда.
- Нажмите на имя участника.
- В разделе Эффективные разрешения отображается полный список прав с учетом всех назначенных ролей.
Разрешения, полученные от разных ролей, отмечены соответствующими метками.