Установка ролевого приложения
Предварительные условия
-
Присутствует файл архива ролевого приложения.
-
Выполнить аутентификацию для выполнения запросов API.
Операции
1. Создать сущность ролевого приложения
$ curl -b <cookie_file_path> \ (1)
-X POST \
-H 'Content-Type: application/json' \
-d '{"title":"<title>","folder":"<folder>","roles":["<roles>"],"svcscriptcode":"<svcscript_code>"}' \ (2) (3) (4) (5)
<api_prefix>/rest/v1/domain/roleapps (6)
1 | <cookie_file_path> – путь до файла из которого будет взята сессионная cookie для отправки серверу. |
2 | <title> – отображаемое название приложения в корневом менеджере веб-приложений. |
3 | <folder> – папка установки ролевого приложения. |
4 | <roles> – список пользовательских ролей, которым доступно приложение. |
5 | <svcscript_code> – код служебного сценария, запускаемого для обработки поступающих HTTP-запросов из приложения на страницу /exec. |
6 | <api_prefix> – префикс URL, в формате http(s)://<host>:<port>. Адрес логической роли webserver с включеным API. |
Например:
$ curl -b curl-worker.cookies \
-X POST \
-H 'Content-Type: application/json' \
-d '{"title":"Example RoleApp","folder":"example_folder","roles":["admin"],"svcscriptcode":"roleapp_sample_svcscript"}' \
http://192.168.0.35/rest/v1/domain/roleapps
{
"ext": {
"ct": "2020-02-12T15:39:32.40Z",
"lwt": "2020-02-12T15:39:32.40Z"
},
"folder": "example_folder",
"id": "43ab6dd4-0170-3a0e-2cb1-e0d55e0cd13e",
"opts": {
"comment": "",
"title": ""
},
"roles": [
"admin"
],
"svcscriptcode": "roleapp_sample_svcscript",
"title": "Example RoleApp"
}
2. Загрузить файл ролевого приложения
$ curl -b <cookie_file_path> \ (1)
-X PUT \
-F 'file=@<zip_file_path>.zip' \ (2)
<api_prefix>/rest/v1/domain/roleapps/<roleapp_id>/attachment (3) (4)
1 | <cookie_file_path> – путь до файла из которого будет взята сессионная cookie для отправки серверу. |
2 | <zip_file_path> – полный путь до файла архива (*.zip) ролевого приложения. |
3 | <api_prefix> – префикс URL, в формате http(s)://<host>:<port>. Адрес логической роли webserver с включеным API. |
4 | <roleapp_id> – идентификатор созданной ранее сущности ролевого приложения. |
Например:
$ curl -b curl-worker.cookies \
-X PUT \
-F 'file=@roleapp_sample.zip'
http://192.168.0.35/rest/v1/domain/roleapps/43ab6dd4-0170-3a0e-2cb1-e0d55e0cd13e/attachment
Пример файла ролевого приложения: roleapp_sample.zip
3. Создать служебный сценарий ролевого приложения.
$ curl -b <cookie_file_path> \ (1)
-X POST \
--data-urlencode 'data@<svcscript_content_file>' \ (2)
<api_prefix>/rest/v1/service/svcscripts (3)
1 | <cookie_file_path> – путь до файла из которого будет взята сессионная cookie для отправки серверу. |
2 | <svcscript_content_file> – полный путь до файла содержащего svcscript entity. |
3 | <api_prefix> – префикс URL, в формате http(s)://<host>:<port>. Адрес логической роли webserver с включеным API. |
Например:
$ curl -b curl-worker.cookies \
-X POST \
--data-urlencode 'data@roleapp_sample_svcscript.json' \
http://192.168.0.35/rest/v1/service/svcscripts
Пример svcscript entity: roleapp_sample_svcscript.json
Проверка результата
Ролевое приложение присутствует в поле "webapps" как один из элементов массива, при условии что пользователь имеет роль, которая указана при создании ролевого приложения.
$ curl -b <cookie_file_path> \ (1)
<api_prefix>/rest/v1/iam/sessions/current (2)
1 | <cookie_file_path> – путь до файла из которого будет взята сессионная cookie для отправки серверу. |
2 | <api_prefix> – префикс URL, в формате http(s)://<host>:<port>. Адрес логической роли webserver с включеным API. |
Например:
$ curl -b curl-worker.cookies \
http://192.168.0.35/rest/v1/iam/sessions/current
{
"domain": "test.ceceron.ru",
"domain_is_master": false,
"domain_type": "worker",
"domains": [
{
"domain": "ceceron.ru",
"is_master": true
}
],
"login": "cc",
"name": "cc",
"name_login": "cc (cc)",
"roles": ["admin",],
"session_id": "a97a70e5-0170-3d64-0abf-e0d55e0cd13e",
"solution": "era",
"tags": [],
"user_id": "3e0b285c-0167-e076-f613-e0d55e0cd13e",
"webapps": [
{
"name": "Сущности",
"order": 116,
"fa-icon": "fa-file-alt",
"description": "Управление сущностями системы",
"roles": ["admin"],
"url": "/entities/"
},
{
"description": "Roleapp Sample Description",
"fa-icon": "fa-bookmark",
"name": "Example RoleApp",
"roles": ["admin"],
"url": "/app/example_folder/"
}
]
}
Элемент ролевого приложения представляет собой содержимое roleapp.json (неизвестные системе поля пробрасываются как есть). По сравнению с roleapp.json iam/sessions/current содержит следующие отличия:
-
добавлено поле "url" установки ролевого приложения. Например: /app/example_folder/, где /app/ - общий префикс, а example_folder - имя папки установки приложения, заданное администратором в объекте roleapp.
-
добавлено поле "roles" из соответствующего объекта roleapp. Список не пуст. Если для приложения не определено ни одной роли, то его не сможет увидеть ни один пользователь.
-
удалены поля "appkey", "apis", "rights".
-
достроены поля "icon" и "iconPath" - в начало дописан префикс установки ролевого приложения (поле "url") если исходный путь является относительным (не начинается со слеша) и не содержит протокола и имени хоста, иначе достройка не происходит.