Фильтрация справочников от значений атрибута из токена пользователя

Материал из 3v-wiki
Перейти к навигации Перейти к поиску

Для фильтрации справочников в отчёте от значений атрибута из токена пользователя:

  1. Необходимо добавить пользовательский атрибут в токен Настройка пользовательского атрибута в Keycloak
  2. Заполнить значение атрибута для пользователя или роли #Настройка значений атрибута пользователя в KeyCloak
  3. Использовать операнд на атрибуте токена TokenAttributeFormulaOperandDto в фильтре справочника по формуле FormulaConditionalDictionaryFilterDto.

Настройка фильтрации справочника в отчет по значению атрибута из токена

  1. Для фильтрации справочника по значению атрибута из токена необходимо использовать фильтр на формуле FormulaConditionalDictionaryFilterDto.
  2. В качестве операнда будет использоваться операнд, который получает значения из атрибута в токена TokenAttributeFormulaOperandDto.

Пример фильтра для справочника отчёта по значению атрибута из токена:

 1 {
 2 "filter": {
 3         "value": {
 4           "expression": "[0]",
 5           "operands": [
 6             {
 7               "attributeId": "test_attribute",
 8               "discriminator": "TokenAttributeFormulaOperandDto"
 9             }
10           ],
11           "discriminator": "FormulaDto"
12         },
13         "attributeId": 1,
14         "attribute": {
15           "Id": 1,
16           "discriminator": "OwnAttributeDefinitionDto"
17         },
18         "conditionType": "AttributeInCollection",
19         "inversion": false,
20         "conditionId": null,
21         "discriminator": "FormulaConditionalDictionaryFilterDto"
22       }
23 }

Предопределенные атрибуты

Предопределенные атрибуты нужно для удобного доступа к "системным" (например: роли пользователя, логин пользователя и тд..) атрибутам токена, т.к. доступ к их значения отличается от доступа к значениям пользовательского атрибута. Все идентификаторы преопределенных атрибутов начинаются с специального символа '$'.

Преопределенный идентификатор Предопределяемый атрибут Определение
$Role http://schemas.microsoft.com/ws/2008/06/identity/claims/role Роли пользователя


Пример использования предопределенного идентификатора атрибута токена в формуле.

 1 {
 2 	"expression": "if(in('Test Role', [0]), 2, 3)",
 3 	"operands": [
 4 	  {
 5 		"id": 0,
 6 		"AttributeId": "$Role",
 7 		"discriminator": "TokenAttributeFormulaOperandDto"
 8 	  }
 9 	],
10 	"discriminator": "FormulaDto"
11 }

Настройка значений атрибута пользователя в KeyCloak

  1. В Keycloak выбираем в блоке "Manage" пункт "Users".
  2. Выбираем нужного пользователя.
  3. Во вкладке пользователя выбираем вкладку "Attributes".
  4. Добавляете атрибут и его значение.
  5. Необходимо убедиться, что для атрибута есть маппер в KeyCloak (1. Clients, Corp-engine, Mappers или 2. Client Scopes, Profile, Mappers).Подробнее.
Настройка значений атрибута пользователя в KeyCloak