Как работает RBAC
При каждом заходе на защищённую страницу система сравнивает запрошенные правом страницы разрешения с выданными пользователю. Выданные права складываются из двух источников — прав самого пользователя и прав его роли в организации (combinedPermissions):
canAny): если у пользователя есть
хотя бы одно из перечисленных для страницы прав — доступ открыт.
Если право задано вложенным массивом (
canEvery), то для доступа нужны все права из этого массива.
Так реализуются комбинированные условия. Обычно же в требованиях страницы перечислены альтернативы —
хватает любого одного права.Защита на уровне маршрутов
Каждый защищённый маршрут в конфигурации роутера объявляет полеauth со списком нужных прав. Например,
раздел управления курсами доступен обладателям любого из трёх прав:
Middleware.Auth проверяет права перед показом страницы: авторизованному пользователю без нужного
права показывается экран запрета, а неавторизованного перенаправляет на страницу входа.
Защита отдельных элементов интерфейса
Отдельные кнопки и блоки внутри страницы тоже можно скрывать по правам с помощью компонентаRbac.Permission — например, кнопки удаления менеджера видны только тем, у кого есть право SellerManage:
Полный список прав
Права сгруппированы по модулям. Ниже — все права из перечисленияPermission, сгруппированные так же,
как они отображаются в интерфейсе (byModule).
Управление школой (School)
Управление организацией (Seller)
Управление курсами (Course)
Управление продуктами (Product)
Управление заданиями и практикой (Task)
Управление персоналом (Staff)
Модуль «Персонал» отображается только на корпоративных площадках (
IS_CORPORATE). В обычной онлайн-школе
эти права не показываются.Помимо перечисленных, в перечислении
Permission есть служебные и платформенные права
(UserIsAdmin, AdminSellerVerify, AdminCoursePublish, TournamentCreateOfficial и др.).
Они относятся к администрированию всей платформы-маркетплейса и не настраиваются в панели отдельной школы.Экран запрета доступа
Если сотрудник открывает раздел, на который у него нет прав, вместо страницы показывается экран запрета (Rbac/Forbidden). Он объясняет, что доступ ограничен, и перечисляет, какие права требуются.
На экране отображается:
- значок замка и заголовок «Недостаточно прав»;
- пояснение об условиях получения доступа;
- список требуемых прав в виде чипов (
required); - кнопка «Обновить страницу» — на случай, если права были только что выданы и нужно перечитать сессию.
Настройка прав команды
Права выдаются при добавлении сотрудника и в любой момент могут быть изменены.Добавление менеджера
1
Откройте раздел менеджеров
Перейдите в «Мои менеджеры» (
/manage/school/managers) для сотрудников с доступом ко всей школе
или в «Менеджеры продукта» (/manage/school/product-managers) для доступа к одному курсу.2
Найдите пользователя
Через поиск по пользователям выберите человека, которого добавляете в команду. Для менеджера продукта
дополнительно выберите курс. Если пользователь уже является менеджером, система предупредит об этом и
предложит перейти к редактированию.
3
Отметьте права
В блоке «Выберите права пользователя» права сгруппированы по модулям (Школа, Организация, Курсы и т.д.).
Отметьте галочками нужные разрешения. У каждого права есть название и краткое описание.
4
Сохраните
Нажмите «Добавить менеджера». Сотрудник получит выбранный набор прав.
Изменение прав существующего сотрудника
Откройте карточку менеджера (/manage/school/managers/:page/:managerId/permissions) — на странице
«Настройки менеджера» можно изменить набор прав, временно деактивировать сотрудника
(переключатель активности) или удалить его из команды. Действия деактивации и удаления доступны
только тем, у кого есть право SellerManage, и недоступны для самого себя.
Пользователи школы
Учеников и их доступы к курсам вы заводите в отдельном разделе «Пользователи школы» (/manage/school/users). Здесь создаются учётные записи учеников, отправляются приглашения и
выдаются доступы к курсам — это работа с учащимися, а не с правами сотрудников команды.
Раздел «Пользователи школы» управляет учениками и их доступами к курсам, а раздел «Мои менеджеры» —
правами сотрудников на управление школой. Не путайте: выдача ученику доступа к курсу не даёт ему
никаких управленческих прав.
Права сотрудников платформы (админ-раздел)
Для площадок-маркетплейсов существует отдельный административный раздел/admin/users, где супер-администратор
(право UserIsAdmin) назначает пользователям платформенные права из полного списка (userManage).
Этот раздел управляет доступом на уровне всей площадки и к настройкам отдельной школы не относится.