Формулировка проблемы: для реализации партнерами внешнего модуля интеграции требуется API для делегирования прав без учета положения в орг. структуре.
Связанные задачи: при реализации данной задачи необходимо учитывать реализацию задачи 2.61.RM2.
Решение: необходимо реализовать три новых
метода API
, которые должны позволять:
получать список прав, которые делегировал авторизованный пользователь;
добавлять делегированные права;
удалять делегированные права.
Метод, возвращающий список прав, которые делегировал авторизованный пользователь
URL
метода:
rest/api/delegation/delegated_actions
. Типа
запроса: GET
.
Метод принимает параметр:
locale
- локаль пользователя,
ru/en/kz
(не обяз., по умолчанию
ru
).
Метод возвращает json
со следующими массивами:
delegatedTasks
- делегированные права по
ежедневнику;
delegatedActions
- делегированные права по
проектам;
delegatedAssignments
- делегированные права
по потокам работ;
Каждый массив содержит следующие поля:
userID
- UUID пользователя, которому
делегированы права;
userName
- Фамилия И.О.
пользователя, которому делегированы права;
массив actions
:
actionID
- ID
прав;
actionName
- название права, согласно его
actionID
.
Значения параметров actionID
и
actionName
:
Ежедневник:
actionID
|
actionName
|
---|---|
|
просмотр |
|
создание |
|
редактирование |
|
удаление |
|
изменение статуса |
Работы:
actionID
|
actionName
|
---|---|
|
просмотр |
|
создание |
|
редактирование |
|
изменение процента выполнения |
|
удаление |
|
изменение статуса |
|
согласование/рассмотрение |
|
утверждение |
Проекты:
actionID
|
actionName
|
---|---|
|
просмотр |
|
редактирование |
|
комментирование |
|
назначение ответственных |
Пример возвращаемых массивов:
{ "delegatedTasks": [ { "userId": "id", "userName": "Фамилия И.", "actions":[{"actionId" :6, "actionName": "Просмотр" }] } ], "delegatedActions": [ { "userId": "id", "userName": "Фамилия И.", "actions":[{"actionId" :130, "actionName": "Просмотр" }] } ], "delegatedAssignments": [ { "userId": "id", "userName": "Фамилия И.", "actions":[{"actionId" :111, "actionName": "Просмотр" }] } ] }
Метод, позволяющий добавлять делегирование прав
URL
метода:
rest/api/delegation/add_delegated_actions
. Типа
запроса: POST
.
Метод принимает следующие параметры:
userID
- UUID пользователя, которому
делегированы права (обяз., FormParam
);
actionID
- ID
прав,
которые следует добавить (обяз., FormParam
);
locale
- локаль пользователя,
ru/en/kz
, по умолчанию ru
(не обяз., QueryParam
).
Альтернативные потоки событий:
повторное добавление уже имеющихся прав игнорируется - добавляются только те права, которых нет у пользователя;
при вводе невалидного userID
система выдает
ошибку «Неправильный userID
», права не
добавляются;
при вводе невалидного actionID
система выдает
ошибку «Неправильный actionID
», права не
добавляются;
право на просмотр добавляется автоматически при добавлении любого другого права;
при добавлении делегированных прав руководителю любого уровня
система выдает ошибку «Изменения не были сохранены, так как
пользователь Фамилия И.О.
уже имеет все
полномочия», права не добавляются;
при добавлении делегированных прав самому авторизованному пользователю система выдает ошибку «Полномочия не делегированы: Вы не можете делегировать себе полномочия», права не добавляются;
при выключении флажка «Разрешать делегирование прав всем
сотрудникам» в разделе Конфигуратора «Документооборот» ->
«Доп. настройки потоков работ» и последующем добавлении
делегированных прав пользователям, которым авторизованный
пользователь не может делегировать права, система выдает ошибку
«Изменения не были сохранены: Вы не являетесь руководителем
пользователя Фамилия И.О.
и не можете
редактировать делегирование прав», права не добавляются.
Метод, позволяющий удалять делегирование прав
URL
метода:
rest/api/delegation/delete_delegated_actions
.
Типа запроса: POST
.
Метод принимает следующие параметры:
userID
- UUID пользователя, которому
делегированы права (обяз., FormParam
);
actionID
- ID
прав,
которые следует удалить (обяз., FormParam
);
locale
- локаль пользователя,
ru/en/kz
, по умолчанию ru
(не обяз., QueryParam
).
Альтернативные потоки событий:
удаление не имеющихся прав игнорируется - удаляются только те права, которые есть у пользователя;
при вводе невалидного userID
система выдает
ошибку «Неправильный userID
», права не
удаляются;
при вводе невалидного actionID
система выдает
ошибку «Неправильный actionID
», права не
удаляются;
при удалении права на просмотр при наличии иных прав типа, система выдает следующие ошибки (в зависимости от типа):
«Невозможно удалить право на просмотр ежедневника: имеются иные права на ежедневник»;
«Невозможно удалить право на просмотр потока работ: имеются иные права на потоки работ»;
«Невозможно удалить право на просмотр проектов: имеются иные права на проекты».