feat(role-compile): условие RLS и тело шаблона можно взять из файла

Симметрично role-edit: в значении пишется "@путь", текст приходит из
файла. Условия типовых занимают десятки строк с кавычками внутри, и в
JSON-строке это источник ошибок экранирования — теперь условие живёт
отдельным файлом рядом с описанием роли.

Работает в rls и в templates[].condition. Отсутствие файла — ошибка до
записи, как и прочие ошибки описания прав.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGkXwoXTuafcu1SXMsauFq
This commit is contained in:
Nick Shirokov
2026-09-13 18:02:35 +03:00
co-authored by Claude Opus 5
parent 9c14715359
commit 121c9c8ad3
16 changed files with 544 additions and 6 deletions
@@ -0,0 +1,37 @@
{
"name": "Условие RLS и тело шаблона берутся из файла",
"setup": "fixture:view-preset-fx",
"cwd": "workDir",
"caseFiles": [
"rls-usloviye.txt"
],
"input": {
"name": "РольИзФайла",
"synonym": "Роль из файла",
"objects": [
{
"name": "Catalog.Номенклатура",
"preset": "view",
"rls": {
"Read": "@rls-usloviye.txt"
}
}
],
"templates": [
{
"name": "ПоОрганизации(Мод)",
"condition": "@rls-usloviye.txt"
}
]
},
"validatePath": "Roles/РольИзФайла",
"expect": {
"fileContains": {
"file": "Roles/РольИзФайла/Ext/Rights.xml",
"text": [
"ОграничениеПоОрганизации",
"restrictionTemplate"
]
}
}
}