Платформа 3V/Согласование/Права доступа и шаги
Для определенного шага/действия процесса можно настроить разрешающие (Allow), либо запрещающие (Deny) права.
На один и тот же шаг можно добавить несколько разделов с настройками прав на различные субъекты доступа.
Можно настроить субъект через формулу, либо задать фиксированное значение субъекта (роль, пользователя), либо завязаться на атрибут параметра процесса согласования, откуда будет тянуться субъект доступа.
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. Фиксированное значение субъекта (роль, пользователь):
1 {
2 "stepId": 4,
3 "subjectId": "admin",
4 "subject": {
5 "subjectId": "admin",
6 "discriminator": "FixedSubjectDescriptionModel"
7 },
8 "type": "Allow"
9 }
2. Через формулу:
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. Из атрибута параметра объекта согласования:
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. Задать фиксированное значение:
1 "owner": {
2 "subjectId": "34c5a091-83b3-44d4-8616-561764a64d9b",
3 "discriminator": "FixedSubjectDescriptionModel"
4 }
2. Получить субъект из атрибута параметра объекта согласования:
1 "owner": {
2 "parameterId": 1,
3 "attribute": {
4 "discriminator": "OwnAttributeDefinitionDto",
5 "id": 45
6 },
7 "discriminator": "ParameterAttributeSubjectDescriptionModel"
8 }
9 }
3. Настроить формулу, для получения субъекта владельца процесса:
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 }