Перейти к содержимому
Русский

Роли и права: как устроены доступы

ЗачемПонять модель доступов до того, как раздавать логины: из чего складывается «что видит сотрудник».
КомуВладельцу, который собирает команду.
Что получитсяЯсная схема «роль (группа прав) + scope категорий = доступ» и умение читать редактор роли.
ОграниченияМодель действует в рамках одного объекта; финансовую видимость сузить категориями нельзя — обе границы разобраны в тексте.

Прежде чем заводить логины сотрудникам, стоит понять, что каждый из них увидит после входа. Доступ собирается из двух независимых частей: группа доступа отвечает за «что можно делать», scope по категориям номера — за «что видно». В статье — обе части, три системные роли и редактор прав.

Всеми доступами управляет раздел «Доступы (RBAC)» в группе «Система» левого меню. Страница называется «Администрирование RBAC», и её подпись сразу задаёт рамку: «Управление группами доступа, правами и назначениями пользователей в рамках текущего отеля.» Доступы описывают один объект — не сеть объектов и не компанию целиком.

Внутри — два таба: «Группы доступа» и «Пользователи». Они и держат две части доступа:

  • Группа доступа — набор прав по модулям: что сотруднику разрешено. Это и есть «роль»; настраивается она на табе «Группы доступа».
  • Scope по категориям — какие категории номера видит сотрудник. Живёт не в роли, а в карточке пользователя — на табе «Пользователи».

Роли собраны в таблицу с колонками ID · Код · Название · Права · Тип · Действия («Изменить») — видно и число прав, и системная это группа или ваша собственная.

Из коробки в системе три роли:

  • «Владелец» (owner) — все 39 прав;
  • «Менеджер» (manager) — набор уже, чем у владельца; точный состав виден в редакторе;
  • «Наблюдатель» (viewer) — роль на просмотр.

В карточке пользователя группа показывается названием с кодом — «Владелец (owner)».

Состав роли меняется в редакторе «Редактирование группы доступа»: поля «* Код роли», «* Название», «Описание» и блок «Права доступа». У системной роли над полями стоит надпись: «Системная роль: код и название недоступны для изменения, можно обновлять только набор прав.» Код и название серые — правится только набор прав. У собственной группы доступны все поля.

Свою группу под свою команду создаёт кнопка «Новая группа» — например, «Стойка»: права на «Шахматку» и «Бронирования», без «Финансов».

Права в группе сгруппированы по 17 модулям: «Менеджер каналов», «Дашборд», «Финансы», «Данные гостей», «Гости», «Сообщения», «Интеграции», «Онлайн-бронование», «Оплаты», «Шахматка», «Тарифы», «Бронирования», «Номера», «Услуги», «Налоги», «Шаблоны», «Пользователи».

Формат каждого права один — «Модуль: действие — описание»: из строки сразу видно, к какому модулю относится действие и что именно оно разрешает.

У большинства модулей права парные — просмотр и редактирование. У некоторых есть точечные действия, и о трёх стоит знать заранее:

  • «Сообщения» — «отправка» и «администрирование»;
  • «Пользователи» — «управление», то есть право настраивать пользователей и их доступы;
  • «Гости» — «Заполнение анкеты за гостя» и «Расшифровка ПДн анкеты гостя»: оба права про паспортные данные из анкеты гостя, выдавать их стоит адресно.

Блок «Права доступа» в редакторе удобен: есть поиск по правам, у каждого модуля — счётчик выбранных «N/N» и кнопки «Снять все» / «Выбрать все».

В редакторе роли настройку видимости по категориям искать бесполезно — её там нет. Принцип модели: роль отвечает за действия, а не за то, «какие номера видно».

Разрез по категориям задаётся в карточке пользователя: таб «Пользователи» → кнопка «Настроить доступ» → экран «Настройка доступа пользователя». Кроме имени, логина, «Объекта» и «Группы доступа», в нём есть блок «Scope по модулю “Номера”» с полем «Режим scope»:

  • «Все категории» — под полем хинт: «Пользователь видит все категории выбранного объекта.»
  • «Только список категорий» — виден лишь выбранный перечень категорий.

Классический пример — горничная: отдельная роль «видит свой этаж» не нужна. Достаточно любой роли и режима «Только список категорий» с перечнем категорий её этажа. Тот же механизм закрывает доступ хозяина юнита: юнит апартаментов — это категория, и scope из одной категории оставляет хозяину его апартаменты.

Правило «пользователь видит только свои деньги» в системе не работает — закладывать его в схему доступов нельзя. Финансы ограничиваются только правом: есть право на модуль «Финансы» — видно всё движение денег по объекту; разреза по категориям у денег нет, и scope по категориям на них не влияет.

Поэтому пару «горничная видит деньги своего этажа» или «хозяин юнита видит оплату только своего апартамента» не собрать: либо право на «Финансы» — и вся картина, либо права нет — и денег нет.

Кто и что менял, показывает журнал: «Логи» → «Журнал приложения» — «Просмотр рабочих действий, системных событий и ошибок с фильтрами по времени, пользователю и сущности.»

Доступы здесь не исключение: создание пользователя оставляет событие USER_CREATED, смена его доступа — USER_ACCESS_UPDATED. Быстрый путь к ним — чип-фильтр «Доступы». Для владельца это готовый ответ на вопрос «кто поправил сотруднику права и когда».