/unica:role-edit — точечное редактирование прав роли
MCP routing
- Preferred path: use MCP
unicatoolunica.applyс операциейright.set. - Роль называет адрес:
args.atвида<набор>:Role.<Имя>. ФизическийRights.xml— внутренняя деталь; наружу путь отдаёт только аварийныйunica.resolve, и в обычном ходе работы он не нужен. - Имя набора даёт
unica.view {}, адрес роли по имени —unica.search {corpus: "names", kind: "Role"}."main"ниже только пример. - Всегда сначала
dryRun: true. ПрименяйdryRun: falseтолько когда пользователь явно попросил внести именно эту правку, и только сifRevиз предпросмотра. - Читай из ответа
changed,effectsпо порядку операций и диагностики. Физический путь и diff контрактом результата не являются.
Операция right.set
args.values принимает object, right и хотя бы одно из value и rls:
| Поле | Что задаёт |
|---|---|
object |
Объект метаданных, например Catalog.Демо |
right |
Имя права, например Delete |
value |
Булево значение права |
rls |
Условие ограничения записей |
Операции выполняются по порядку и публикуются одной транзакцией: либо все,
либо ни одной. Повтор эквивалентной операции даёт changed: false без записи.
Объект, ещё не перечисленный в роли, добавляется сам. Прежний писатель
отказывал object_not_listed и требовал сперва внести объект Конфигуратором;
канонический right.set заводит объектный блок вместе с правом.
Платформа хранит объектное право только со значением, отличным от умолчания
роли setForNewObjects. Поэтому right.set со значением умолчания (обычно
false) удаляет элемент права вместе с его RLS, а опустевший объектный блок —
целиком; если право уже отсутствует, это законный no-op.
Зависимости прав платформы писатель не моделирует: «ввод по строке» требует «просмотра», и состояние, нарушающее матрицу зависимостей, платформа молча дополнит при импорте. Следи за парными правами сам.
Для DataProcessor.* значение Use=false применяет правило платформы:
удаляется весь объектный блок вместе с зависимым правом View. На другие виды
объектов и права это не обобщается.
MCP examples
Предпросмотр
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.apply",
"arguments": {
"at": "main:Role.Демо",
"ops": [
{
"op": "right.set",
"args": {
"at": "main:Role.Демо",
"values": {
"object": "Catalog.Демо",
"right": "Delete",
"value": false
}
}
}
],
"dryRun": true
}
}
}
Право с ограничением записей
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.apply",
"arguments": {
"at": "main:Role.Демо",
"ops": [
{
"op": "right.set",
"args": {
"at": "main:Role.Демо",
"values": {
"object": "Document.Заказ",
"right": "Read",
"value": true,
"rls": "ГДЕ Автор = &Пользователь"
}
}
}
],
"dryRun": false,
"ifRev": "<rev из предпросмотра>"
}
}
}