Среда программирования env.toml#

Формат настройки#

Существует возможность настроить общую среду программирования, описав набор системных переменных, доступных для использования во всех кастомных процедурах и шаблонах Blitz Identity Provider:

  • процедура входа,

  • процедура регистрации,

  • процедура связывания учетных записей внешних поставщиков,

  • процедура обработки RADIUS-запросов,

  • валидаторы атрибутов,

  • трансляторы атрибутов,

  • шаблоны страницы входа, регистрации, восстановления доступа, Личного кабинета пользователя.

Примечание

Помимо общей среды программирования, в процедурах можно использовать следующие сущности:

  • константы в самой процедуре;

  • теги приложений;

  • свойства пользователя.

Набор системных переменных задается в формате TOML в файле env.toml, который должен быть расположен в $app-data-path, где $app-data-path — это путь, заданный в конфигурационном файле /usr/share/identityblitz/blitz-config/boot.conf.

Поддерживаемые переменные#

В текущей реализации среды программирования можно определить переменные следующих типов:

  • string,

  • number,

  • boolean,

  • object,

  • array.

Использование среды в процедурах#

В процедурах доступ к системным переменным Blitz Identity Provider можно получить, используя функцию ctx.envVars(). Эта функция возвращает интерфейс JsObject только с возможностью чтения переменных.

Для того чтобы из JsObject получить данные, используйте одну из следующих функций:

String#
String asString(String field);
Boolean#
Boolean asBoolean(String field);
Long#
Long asLong(String field);
JsObject#
 JsObject asObject(String field);
Список JsObject#
List<JsObject> asObjects(String field);
Список String#
List<String> asStrings(String field);
Список Long#
List<Long> asLongs(String field);

У интерфейса JsObject есть следующие методы:

  • проверка наличия поля Boolean contains(String field);

  • проверка непустоты объекта public Boolean nonEmpty().

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

JsObject addString(String field, String value);
JsObject addBoolean(String field, java.lang.Boolean value);
JsObject addLong(String field, java.lang.Long value);
JsObject addObject(String field, JsObject value);
JsObject addStrings(String field, java.util.List value);
JsObject addLongs(String field, java.util.List<java.lang.Long> value);

Внимание

В текущей реализации через интерфейс com.identityblitz.idp.login.authn.flow.api.Props из всех комбинаций (string, number, boolean, object, array) сейчас нельзя получить только вложенные друг в друга array.

Использование среды в шаблонах#

В шаблонах доступ к системным переменным Blitz Identity Provider можно получить, используя функцию ctx.envVars(). Эта функция возвращает JObj. Для получения данных можно пользоваться следующим способом:

(ctx.envVars \ "<имя переменной>").asOpt[<тип переменной>]

Примеры использования#

Пример env.toml#
title = "Example"
number = 3
ports = [ 8000, 8001, 8002 ]
obj = { name = "name", enabled = true }
Пример вызова в Java-процедуре#
import com.identityblitz.idp.extensions.types.JsObject;

String title = ctx.envVars().asString("title");
Long number = ctx.envVars().asLong("number");
List<Long> ports = ctx.envVars().asLongs("ports");
JsObject obj = ctx.envVars().asObject("obj");
String name_obj = obj.asString("name");
Boolean enabled_obj = obj.asBoolean("enabled");
Пример вызова в шаблоне#
<p>@msg(s"${(ctx.envVars \ "title").as[String]}")</p>