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

Материал из 3v-wiki
Перейти к навигации Перейти к поиску

Для определенного шага/действия процесса можно настроить разрешающие (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     }