Платформа 3V/Согласование/Права доступа и шаги: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
(Новая страница: «Страница в разработке»)
 
 
Строка 1: Строка 1:
Страница в разработке
+
Для определенного шага/действия процесса можно настроить разрешающие (Allow), либо запрещающие (Deny) права. <br>
 +
 
 +
На один и тот же шаг можно добавить несколько разделов с настройками прав на различные субъекты доступа. <br>
 +
 
 +
Можно настроить субъект через формулу, либо задать фиксированное значение субъекта (роль, пользователя), либо завязаться на атрибут параметра процесса согласования, откуда будет тянуться субъект доступа.<br>
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">
 +
<div style="font-weight:bold;line-height:1.6;">Пример JSON-модели прав доступа</div>
 +
<div class="mw-collapsible-content mw-collapsed-content">
 +
<syntaxhighlight lang="JSON" line>
 +
"permissions": [
 +
      {
 +
        "stepId": 2,
 +
        "subjectId": "head",
 +
        "subject": {
 +
          "subjectId": "head",
 +
          "discriminator": "FixedSubjectDescriptionModel"
 +
        },
 +
        "type": "Allow"
 +
      }
 +
  ]
 +
</syntaxhighlight>
 +
</div></div>
 +
 
 +
Основные свойства настройки прав доступа:<br>
 +
 
 +
'''stepId''' – идентификатор действия, для которого настраиваются права доступа<br>
 +
 
 +
'''subjectId''' – идентификатор роли, либо идентификатор пользователя как субъекта доступа<br>
 +
 
 +
'''subject''' – настройка субъекта доступа:<br>
 +
 
 +
1. Фиксированное значение субъекта (роль, пользователь):<br>
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">
 +
<div style="font-weight:bold;line-height:1.6;">JSON пример</div>
 +
<div class="mw-collapsible-content mw-collapsed-content">
 +
<syntaxhighlight lang="JSON" line>
 +
{
 +
        "stepId": 4,
 +
        "subjectId": "admin",
 +
        "subject": {
 +
          "subjectId": "admin",
 +
          "discriminator": "FixedSubjectDescriptionModel"
 +
        },
 +
        "type": "Allow"
 +
      }
 +
</syntaxhighlight>
 +
</div></div>
 +
 
 +
2. Через формулу:<br>
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">
 +
<div style="font-weight:bold;line-height:1.6;">JSON пример</div>
 +
<div class="mw-collapsible-content mw-collapsed-content">
 +
<syntaxhighlight lang="JSON" line>
 +
{
 +
        "stepId": 1,
 +
        "subjectId": null,
 +
        "subject": {
 +
          "formula": {
 +
            "expression": "[0]",
 +
            "operands": [
 +
              {
 +
                "attributeId": "sid",
 +
                "discriminator": "TokenAttributeFormulaOperandDto",
 +
                "code": null,
 +
                "id": 0,
 +
                "name": null
 +
              }
 +
            ],
 +
            "code": null,
 +
            "id": 0,
 +
            "name": null
 +
          },
 +
          "discriminator": "FormulaSubjectDescriptionModel"
 +
        },
 +
        "type": "Allow"
 +
      }
 +
</syntaxhighlight>
 +
</div></div>
 +
 
 +
3. Из атрибута параметра объекта согласования:<br>
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">
 +
<div style="font-weight:bold;line-height:1.6;">JSON пример</div>
 +
<div class="mw-collapsible-content mw-collapsed-content">
 +
<syntaxhighlight lang="JSON" line>
 +
{
 +
        "stepId": 1,
 +
        "subjectId": null,
 +
        "subject": {
 +
          "parameterId": 1,
 +
          "attribute": {
 +
            "discriminator": "OwnAttributeDefinitionDto",
 +
            "id": 20
 +
          },
 +
          "discriminator": "ParameterAttributeSubjectDescriptionModel"
 +
        },
 +
        "type": "Allow"
 +
      }
 +
</syntaxhighlight>
 +
</div></div>
 +
 
 +
== Настройка владельца процесса ==
 +
 
 +
Для объекта согласования можно настроить владельца процесса – субъект прав доступа, который имеет полные права на весь процесс согласования, право выполнять любой шаг процесса, редактировать ответственный ему экземпляр процесс согласования. Для настройки владельца процесса в JSON модели объекта согласования есть раздел owner. Свойства для настройки владельца аналогичны свойствам subject настройки субъекта доступа.
 +
<br>
 +
Владельца процесса можно настроить одним из вариантов:<br>
 +
 
 +
1. Задать фиксированное значение:<br>
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">
 +
<div style="font-weight:bold;line-height:1.6;">JSON пример</div>
 +
<div class="mw-collapsible-content mw-collapsed-content">
 +
<syntaxhighlight lang="JSON" line>
 +
"owner": {
 +
      "subjectId": "34c5a091-83b3-44d4-8616-561764a64d9b",
 +
      "discriminator": "FixedSubjectDescriptionModel"
 +
    }
 +
</syntaxhighlight>
 +
</div></div>
 +
 
 +
2. Получить субъект из атрибута параметра объекта согласования:<br>
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">
 +
<div style="font-weight:bold;line-height:1.6;">JSON пример</div>
 +
<div class="mw-collapsible-content mw-collapsed-content">
 +
<syntaxhighlight lang="JSON" line>
 +
"owner": {
 +
      "parameterId": 1,
 +
      "attribute": {
 +
        "discriminator": "OwnAttributeDefinitionDto",
 +
        "id": 45
 +
      },
 +
      "discriminator": "ParameterAttributeSubjectDescriptionModel"
 +
    }
 +
  }
 +
</syntaxhighlight>
 +
</div></div>
 +
 
 +
3. Настроить формулу, для получения субъекта владельца процесса:<br>
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">
 +
<div style="font-weight:bold;line-height:1.6;">JSON пример</div>
 +
<div class="mw-collapsible-content mw-collapsed-content">
 +
<syntaxhighlight lang="JSON" line>
 +
"owner": {
 +
                "formula": {
 +
            "expression": "[0]",
 +
            "operands": [
 +
              {
 +
                "attributeId": "sid",
 +
                "discriminator": "TokenAttributeFormulaOperandDto",
 +
                "code": null,
 +
                "id": 0,
 +
                "name": null
 +
              }
 +
            ],
 +
            "code": null,
 +
            "id": 0,
 +
            "name": null
 +
          },
 +
          "discriminator": "FormulaSubjectDescriptionModel"
 +
    }
 +
</syntaxhighlight>
 +
</div></div>

Текущая версия на 10:36, 25 ноября 2021

Для определенного шага/действия процесса можно настроить разрешающие (Allow), либо запрещающие (Deny) права.

На один и тот же шаг можно добавить несколько разделов с настройками прав на различные субъекты доступа.

Можно настроить субъект через формулу, либо задать фиксированное значение субъекта (роль, пользователя), либо завязаться на атрибут параметра процесса согласования, откуда будет тянуться субъект доступа.

Пример JSON-модели прав доступа
 1 "permissions": [
 2       {
 3         "stepId": 2,
 4         "subjectId": "head",
 5         "subject": {
 6           "subjectId": "head",
 7           "discriminator": "FixedSubjectDescriptionModel"
 8         },
 9         "type": "Allow"
10       }
11    ]

Основные свойства настройки прав доступа:

stepId – идентификатор действия, для которого настраиваются права доступа

subjectId – идентификатор роли, либо идентификатор пользователя как субъекта доступа

subject – настройка субъекта доступа:

1. Фиксированное значение субъекта (роль, пользователь):

JSON пример
1 {
2         "stepId": 4,
3         "subjectId": "admin",
4         "subject": {
5           "subjectId": "admin",
6           "discriminator": "FixedSubjectDescriptionModel"
7         },
8         "type": "Allow"
9       }

2. Через формулу:

JSON пример
 1 {
 2         "stepId": 1,
 3         "subjectId": null,
 4         "subject": {
 5           "formula": {
 6             "expression": "[0]",
 7             "operands": [
 8               {
 9                 "attributeId": "sid",
10                 "discriminator": "TokenAttributeFormulaOperandDto",
11                 "code": null,
12                 "id": 0,
13                 "name": null
14               }
15             ],
16             "code": null,
17             "id": 0,
18             "name": null
19           },
20           "discriminator": "FormulaSubjectDescriptionModel"
21         },
22         "type": "Allow"
23       }

3. Из атрибута параметра объекта согласования:

JSON пример
 1 {
 2         "stepId": 1,
 3         "subjectId": null,
 4         "subject": {
 5           "parameterId": 1,
 6           "attribute": {
 7             "discriminator": "OwnAttributeDefinitionDto",
 8             "id": 20
 9           },
10           "discriminator": "ParameterAttributeSubjectDescriptionModel"
11         },
12         "type": "Allow"
13       }

Настройка владельца процесса

Для объекта согласования можно настроить владельца процесса – субъект прав доступа, который имеет полные права на весь процесс согласования, право выполнять любой шаг процесса, редактировать ответственный ему экземпляр процесс согласования. Для настройки владельца процесса в JSON модели объекта согласования есть раздел owner. Свойства для настройки владельца аналогичны свойствам subject настройки субъекта доступа.
Владельца процесса можно настроить одним из вариантов:

1. Задать фиксированное значение:

JSON пример
1 "owner": {
2       "subjectId": "34c5a091-83b3-44d4-8616-561764a64d9b",
3       "discriminator": "FixedSubjectDescriptionModel"
4     }

2. Получить субъект из атрибута параметра объекта согласования:

JSON пример
1 "owner": {
2       "parameterId": 1,
3       "attribute": {
4         "discriminator": "OwnAttributeDefinitionDto",
5         "id": 45
6       },
7       "discriminator": "ParameterAttributeSubjectDescriptionModel"
8     }
9   }

3. Настроить формулу, для получения субъекта владельца процесса:

JSON пример
 1 "owner": {
 2                 "formula": {
 3             "expression": "[0]",
 4             "operands": [
 5               {
 6                 "attributeId": "sid",
 7                 "discriminator": "TokenAttributeFormulaOperandDto",
 8                 "code": null,
 9                 "id": 0,
10                 "name": null
11               }
12             ],
13             "code": null,
14             "id": 0,
15             "name": null
16           },
17           "discriminator": "FormulaSubjectDescriptionModel"
18     }