Перейти к содержанию

Публичные и внутренние формы. Контроль доступа

Введение

Для любого шаблона (кроме шаблона процесса) можно создать неограниченное число форм. На них можно поместить разные атрибуты, и каждая форма может предназначаться для отдельной категории пользователей.

Доступ пользователей к форме определяется с помощью ролей и типа формы.

Здесь представлены инструкции по контролю доступа к формам посредством типа формы, а также по созданию ссылок на формы для внешних пользователей.

Определения

Предусмотрено три типа форм: публичная, внутренняя, внешняя.

    • К публичной форме можно перейти с помощью селектора форм рядом с заголовком записи.
    • Внутренняя форма не отображается в селекторе форм.
      • Внутренняя форма отображается, только если она вложена в другую форму или указана в качестве формы для записей (например, при запуске процесса, при создании записи, в диалоговых окнах).
      • К внутренней форме можно перейти по прямой ссылке.
    • Вложенная форма отображается в составе родительской формы независимо от того, является ли она внутренней или публичной, и независимо от разрешения на просмотр вложенной формы в роли пользователя.
    • Ни внутренняя, ни публичная форма не отображается, если роль пользователя не разрешает просмотр данной формы.
    • По умолчанию формы являются публичными. Чтобы ограничить доступ к форме через селектор форм, необходимо сменить тип формы на внутреннюю.

    Публичные и внутренние формы предназначены для пользователей, выполнивших вход в Comindware Platform.

    См. Пример настройки внутренней формы для ограничения доступа к ней.

  • Внешние формы предназначены для пользователей мобильного приложения и мобильных браузеров, у которых нет аккаунта в Comindware Platform.

    • К внешней форме можно перейти по специальной ссылке без входа в Comindware Platform.

    См. Пример создания ссылки на внешнюю форму.

Доступ к стартовым формам и формам пользовательских задач процессов

В начальном событии и пользовательской задаче отображается только определённая форма связанного шаблона записи и селектор форм недоступен.

Стартовая форма и форма пользовательской задачи всегда являются публичными.

Стартовые формы и формы пользовательских задач не могут быть внешними.

Пример настройки внутренней формы для ограничения доступа к ней

В качестве примера создадим в шаблоне записи две формы и разграничим доступ к ним:

  • Клиентпубличная форма, будет доступна через селектор форм наряду с основной формой шаблона.
  • Диспетчервнутренняя форма, не будет доступна через селектор форм. Пользователь сможет перейти к этой форме только по прямой ссылке, например, отправленной в эл. письме.

Настройка форм

  1. Создайте приложение «Оформление заявок».
  2. Создайте шаблон записи «Заявки» со следующими атрибутами:

    Название Тип Свойства
    Тип ТС Список значений Добавьте значения «легковой автомобиль», «автобус», «грузовой автомобиль»
    Количество пассажиров Число Количество знаков после запятой: 0
    Водитель Аккаунт
  3. Поместите на основную форму шаблона атрибуты «Тип ТС» и «Количество пассажиров».

  4. Создайте форму «Клиент» и поместите на неё атрибут «Количество пассажиров».
  5. Создайте форму «Диспетчер» и поместите на неё атрибуты «Тип ТС», «Количество пассажиров», «Водитель».
  6. В свойствах формы «Диспетчер» выберите тип «Внутренняя».

Тестирование внешней формы

  1. Создайте новую запись в шаблоне «Заявки».
  2. Откроется основная форма шаблона.
  3. Нажмите селектор форм рядом с заголовком записи:

    • В раскрывающемся списке под селектором будут отображаться основная форма шаблона и форма «Клиент».
    • Форма «Диспетчер» в списке отображаться не будет.
  4. Выберите и просмотрите форму «Клиент».

  5. Перейдите к форме «Диспетчер», используя ссылку вида:

    http://<hostname>/#form/<oa.XX>/<form.XX>/<RecordID> 

    Здесь:

    • http://<hostname>/ — адрес сервера Comindware Platform;
    • <oa.XX> — ID шаблона записи «Заявки» (его видно в списке шаблонов);
    • <form.XX> — ID формы «Диспетчер» (его видно в адресной строке браузера в конструкторе формы);
    • <RecordID> — ID записи «Заявки».

Пример создания ссылки на внешнюю форму

Рассмотрим пример настройки ссылки на внешнюю форму «Клиент» из предыдущего примера, чтобы любой клиент мог оставлять заявку, не выполняя вход в Comindware Platform.

Логика работы внешних форм

Если для создана ссылка на внешнюю форму, она действует следующим образом:

  • Пользователь переходит по ссылке на внешнюю форму:
    • если пользователь не вошёл в Comindware Platform, для него будет создан аккаунт в группе «Анонимные пользователи» с соответствующими разрешениями;
    • если пользователь перед открытием ссылки вошёл в Comindware Platform, он будет работать обычным образом с учётом разрешений своего аккаунта.
  • Если в ссылке закодированы значения атрибутов, форма будет заполнена этими данными.
  • Форма откроется для пользователя.
  • Пользователь заполнит и сохранит форму.
  • При сохранении формы будет создана запись в шаблоне, к которому относится форма.

Особенности внешних форм

  • Внешние ссылки работают только в мобильном приложении и мобильном браузере.
  • Для обработки данных формы применяются разрешения, настроенные в роли, которая назначена группе «Анонимные пользователи».

Данные для формирования ссылки на внешнюю форму

Для формирования ссылки на внешнюю форму соберите следующие данные:

  • <your-host> — URL экземпляра Comindware Platform;
  • SolutionIdстрока вида sol.XXX, ID приложения, к которому относится форма;
  • ObjectIdстрока вида oa.XXX, ID шаблона записи, к которому относится форма;
  • TargetIdстрока вида form.XXX, ID формы, которую должны открывать внешние пользователи;
  • UserCommandIdстрока вида event.XXX, ID кнопки, которую требуется добавить на форму (необязательный параметр). Эта кнопка будет добавлена к кнопкам, настроенным с помощью конструктора формы.
  • Объект со значениями атрибутов для предварительного заполнения формы (необязательный аргумент):

    "PredefinedData": 
    {
    "attribute1SystemName": "value",
    "attribute2SystemName": "value",
    ...
    "attributeNSystemName": "value"
    }

Настройка ссылки

Необходим доступ к API

Для формирования ссылки на внешнюю форму используется метод System Core API /Base/EncryptedNavigationReferenceService/Generate, поэтому вам потребуется доступ к API Comindware Platform.

См. «Аутентификация для доступа к API» и «Методы System Core API».

  1. Соберите следующие данные для формирования ссылки:

    • ID приложения «Оформление заявок», например sol.1;
    • ID шаблона «Заявки», например oa.1;
    • ID формы «Клиент», например form.1;
    • Значение атрибута «Количество пассажиров» для заполнения формы, например 2.
  2. Выполните POST‑запрос к методу Base/EncryptedNavigationReferenceService/Generate:

    curl -X POST \ 
    "https://<your-host>/api/public/system/Base/EncryptedNavigationReferenceService/Generate" \
    -H "Content-Type: application/json" \
    -u <username>:<password> \
    -d '{
    "SolutionId": "sol.1",
    "ObjectId": "oa.1",
    "TargetId": "form.1",
    "TargetType": "Form"
    }'

    Здесь: "TargetType": "Form"обязательный фиксированный параметр, который не следует изменять.

    Подставьте фактические ID

    Не забудьте указать в запросе фактические идентификаторы сущностей из своего экземпляра Comindware Platform.

  3. В ответ придёт сгенерированная ссылка на форму вида:

    "https://<your-host>/Resolve?data=<encryptedData>" 
  4. Проверьте, что ссылка сформирована корректно, с помощью метода Base/EncryptedNavigationReferenceService/Decrypt, указав в теле запроса закодированную строку <encryptedData> (без части https://<your-host>/Resolve?data=):

    curl -X POST \ 
    "https://<your-host>/api/public/system/Base/EncryptedNavigationReferenceService/Decrypt" \
    -H "Content-Type: application/json" \
    -u <username>:<password> \
    -d "<encrypted>"
  5. В ответ должен прийти объект со свойствами целевой формы:

    { 
    "SolutionId": "sol.1",
    "ObjectId": "oa.1",
    "TargetId": "form.1",
    "TargetType": "Form"
    }

Тестирование внешней формы

  1. Откройте браузер на мобильном устройстве в режиме «Инкогнито», чтобы протестировать форму от лица внешнего пользователя.
  2. Вставьте в адресную строку ссылку на внешнюю форму вида:

    https://<your-host>/Resolve?data=<encryptedData> 
  3. Должна открыться форма «Клиент».

  4. Заполните и сохраните форму.
  5. Откройте браузер на компьютере.
  6. Войдите в Comindware Platform.
  7. Удостоверьтесь, что в шаблоне «Заявки» появилась запись, заполненная с помощью внешней формы на мобильном устройстве.
К началу