Рецепты
Новая роль и права во всех ролях менеджеров
Цель — дать доступ к новому справочнику так, как это сделано для похожих объектов. Роли «Чтение…» и «ДобавлениеИзменение…» по стандарту ИТС 689, права как у справочника-образца во всех ролях, где они есть, и чтение группе ролей менеджеров — одним вызовом на каждый шаг, с предпросмотром.
Предпосылки
- Новый справочник уже создан — в примерах
Catalog.<НовыйСправочник>. - Образец — справочник с правильно настроенными правами, в примерах
Catalog.Номенклатура. - Действует ключ или бесплатный доступ. Роли, закрытые поставщиком, не меняются — массовые операции их пропускают и перечисляют в
Skipped.
Шаги
1. Снапшот
{ "operation": "create", "label": "до прав нового справочника" }2. Как устроены права у образца
{ "project": "УТ2020", "fqn": "Catalog.Номенклатура#roles" }Обратная матрица: все роли конфигурации и её расширений, которые дают что-то на справочник, с набором прав (@read (3), @edit (9), @all (25) или явный список), отметкой ограничений на уровне записей и ролей, выдающих права по умолчанию.
3. Роли по стандарту для нового объекта
{
"project": "УТ2020",
"operation": "scaffold_roles",
"objects": ["Catalog.<НовыйСправочник>"],
"subsystems": ["Subsystem.<Подсистема>"],
"dry_run": true
}Создаёт роли Чтение<НовыйСправочник> с набором @read и ДобавлениеИзменение<НовыйСправочник> с набором @edit — без удаления, как рекомендует ИТС 689, — и право просмотра подсистемы и её родителей. Ответ 🔵 dry_run показывает план. Повторите без dry_run, чтобы записать.
4. Права как у образца во всех ролях
{
"project": "УТ2020",
"operation": "clone_object_rights",
"from": "Catalog.Номенклатура",
"objects": ["Catalog.<НовыйСправочник>"],
"dry_run": true
}Явные права образца копируются новому справочнику в каждой роли, где они есть. Ограничения на уровне записей копируются с заменой имени таблицы, а в Warnings об этом сказано — проверьте их. Секция Roles в ответе — по строке на роль, одинаковые изменения сжимаются.
5. Чтение группе ролей менеджеров
{
"project": "УТ2020",
"operation": "grant",
"objects": ["Catalog.<НовыйСправочник>"],
"rights": ["@read"],
"roles_regex": "^<Шаблон имени ролей менеджеров>",
"dry_run": true
}roles_regex — регулярное выражение по именам ролей, привязанное к началу имени. Вместо него можно перечислить роли явно в roles. Ответ показывает roles_matched N of M — сколько ролей совпало из всех — и изменения по каждой. За один вызов меняется до 50 ролей; остальные попадут в секцию Deferred с готовым следующим вызовом. У предпросмотра ограничения нет.
Проверка
rights_readс адресомCatalog.<НовыйСправочник>#roles— новые роли и роли менеджеров в матрице с нужными наборами.rights_readс адресомRole.Чтение<НовыйСправочник>.Rights— сводка новой роли.validateсcheckers: ["rights"]— опасные права в функциональных ролях, права, неприменимые к типу, объекты без прав ни в одной роли.
Откат
{ "operation": "restore", "snapshot_id": "<идентификатор снапшота из шага 1>" }Снапшот хранит файлы прав ролей, а snapshot_read с операцией diff_semantic показывает изменения прав по объектам: какие права добавлены и сняты. Снять права точечно — rights_action с операцией revoke и теми же объектами и ролями.