Установка ролевого приложения

Предварительные условия

Операции

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": "xunit",
  "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") если исходный путь является относительным (не начинается со слеша) и не содержит протокола и имени хоста, иначе достройка не происходит.