Безопасность бизнес-процесса

Описание

Безопасность в бизнес-процессе нужна для контроля прав над конкретным объектом одним пользователем и задается через мету класса, статусы и переходы бизнес-процесса.

Реализация

В мете заранее надо опеределить строковый атрибут, в котором будет храниться идентификатор пользователя.

Для контроля прав при переходах по БП надо в перееходе добавить присваивание текущего пользователя в атрибут, по которому будут выдаваться права на следующем статусе БП.

Затем задаем в статусе БП уровень доступа в свойстве itemPermissions:

"itemPermissions": [
        {
          "role": ...
          "permissions": ...
        }
      ]
  • role - указывается атрибут, который хранит идентификатор пользователя
  • permissions - задается число по битовой маске, которое соотноcится с уровнем доступа role к объекту
    • 1 - чтение
    • 2 - запись
    • 4 - удаление
    • 8 - использование
    • 31 - полный доступ

Можно использовать права в любом порядке. Например:

  • чтение + запись = 3
  • чтение + запись + удаление = 7
  • чтение + запись + удаление + использование = 15

Внимание! В бизнес-процессе динамические права могут только предоставить больше доступа. Уменьшить доступ нельзя.

Примеры

Присваивание в переходе БП атрибуту person текущего пользователя, работающим с объектом

"assignments": [
    {
        "key": "person",
        "value": "$$uid"
    }
]

Добавление itemPermissions в статус БП

"states": [
    {
      "itemPermissions": [
        {
          "role": "person",
          "permissions": 15
        }
      ]
    }
  ]