Формулировка проблемы: нет возможности получить полный список реестров и групп реестров, который доступен пользователю.
Решение: необходимо реализовать API метод, который будет возвращать список реестров и групп в виде дерева.
Для выполнения API метода необходимо авторизоваться под пользователем, для которого требуется получение списка реестров.
URL метода: rest/api/registry/list
Тип запроса: GET
.
Метод может принимать следующий входной параметр:
regGroupID
- идентификатор группы реестров
(необяз.).
Метод возвращает группы реестров и реестры в виде дерева (в соответствии с навигатором), а также список прав пользователя на данные реестры. При указании определенной группы, возвращаются группы и реестры в виде дерева, входящие в данную группу. При этом те реестры, которые в навигаторе не отображаются, не должны возвращаться (реестры без права просмотра списка).
Метод возвращает массив JSON, состоящий из следующих полей:
для группы реестров:
regGroupID
- идентификатор группы реестров;
regGroupName
- название группы реестров;
consistOf
- массив, состоящий из групп
реестров и реестров, входящих в данную группу;
для реестрa:
registryID
- идентификатор реестра
registryName
- название реестра
registryCode
- код реестра
rights
- массив, состоящий из списка прав,
которые присутствует у авторизованного пользователя на данный
реестр. Может состоять из следующих строк:
rr_create
- право на создание;
rr_list
- право на просмотр списка;
rr_read
- право просмотр данных;
rr_edit
- право на редактирование;
rr_modify
- право на изменение;
rr_delete
- право на удаление;
Пример запроса:
rest/api/registry/list?regGroupID=d8773631-9cbb-4c5f-b3bc-561d95a107a6
Пример возвращаемого массива:
[ { "regGroupID" : "8862e0fb-d334-462b-a8e8-e83b4f4e8f58", "regGroupName" : "Сервисы ДРТ", "consistOf": [ { "registryID" : "c56b2970-d3d8-11e6-833d-001ef892a4ee", "registryName" : "Feature Requests", "registryCode" : "Feature_Requests", "rights" : ["rr_create", "rr_list", "rr_read", "rr_edit", "rr_modify", "rr_delete"] }, { "registryID" : "0112b29b-95ad-45fd-b5c3-317613b3ab46", "registryName" : "Заявки в ДРТ", "registryCode" : "Заявки_в_ДРТ", "rights" : ["rr_create", "rr_list", "rr_read", "rr_edit"] } ] }, { "regGroupID" : "4d8db8c0-d340-11e6-8212-001ef892a4ee", "regGroupName" : "Приказы", "consistOf": [ { "regGroupID" : "77c72a08-9851-4963-b36c-bee7fcf39b8f", "regGroupName" : "Приказы по отпускам", "consistOf": [ { "registryID" : "a6598ca6-ab62-4187-964e-576a2c7173fe", "registryName" : "Приказ о трудовом отпуске", "registryCode" : "prikaz_o_trudovom_otpuske", "rights" : ["rr_create", "rr_list", "rr_read", "rr_edit", "rr_delete"] } ] }, { "regGroupID" : "4cfb3cc0-d340-11e6-8212-001ef892a4ee", "regGroupName" : "Приказы по приему на работу", "consistOf": [ { "registryID" : "032af000-d30d-11e6-833d-001ef892a4e", "registryName" : "Приказ о приеме на работу (ЦА)", "registryCode" : "prikaz_o_prieme_na_rabotu_CA", "rights" : ["rr_create", "rr_list", "rr_read"] } ] } ] }, { "registryID" : "ba9e43e4-3a95-474a-90a4-36ba79a7d9f9", "registryName" : "Уведомление о сроках итерации", "registryCode" : "uvedomlenie_o_srokah_iteracii", "rights" : ["rr_list", "rr_read"] } ]
Альтернативные потоки событий
Альтернативный поток №1. Передан некорректный (несуществующий)
параметр regGroupID
. Сервер возвращает ошибку
HTTP 400 c сообщением:
{ "errorCode" : 3, "errorMessage" : "Передан некорректный параметр regGroupID" }
Альтернативный поток №2. У пользователя отсутствуют права на переданную группу. Сервер возвращает ошибку HTTP 403 c сообщением:
{ "errorCode" : 2, "errorMessage" : "У пользователя отсутствуют права на данную группу" }