Формулировка проблемы: нет возможности получить полный список реестров и групп реестров, который доступен пользователю.
Решение: необходимо реализовать 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" : "У пользователя отсутствуют права на данную группу"
}