Среда программирования 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 asString(String field);
Boolean asBoolean(String field);
Long asLong(String field);
JsObject asObject(String field);
List<JsObject> asObjects(String field);
List<String> asStrings(String field);
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[<тип переменной>]
Примеры использования#
title = "Example"
number = 3
ports = [ 8000, 8001, 8002 ]
obj = { name = "name", enabled = true }
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>