Формулировка проблемы: для реализации партнерами внешнего модуля интеграции требуется 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», права не
удаляются;
при удалении права на просмотр при наличии иных прав типа, система выдает следующие ошибки (в зависимости от типа):
«Невозможно удалить право на просмотр ежедневника: имеются иные права на ежедневник»;
«Невозможно удалить право на просмотр потока работ: имеются иные права на потоки работ»;
«Невозможно удалить право на просмотр проектов: имеются иные права на проекты».