Платформа 3V/Отчет/6. Дополнительные действия в отчете/Фильтр выпадающих списков/Фильтр от значений атрибута из токена пользователя: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
Строка 33: Строка 33:
 
         "discriminator": "FormulaConditionalDictionaryFilterDto"
 
         "discriminator": "FormulaConditionalDictionaryFilterDto"
 
       }
 
       }
 +
}
 +
</syntaxhighlight>
 +
 +
=== Предопределенные атрибуты ===
 +
Предопределенные атрибуты нужно для удобного доступа к "системным" (например: роли пользователя, логин пользователя и тд..) атрибутам токена, т.к. доступ к их значения отличается от доступа к значениям пользовательского атрибута.
 +
Все идентификаторы преопределенных атрибутов начинаются с специального символа ''''$''''.
 +
 +
{| class="wikitable"
 +
|-
 +
! Преопределенный идентификатор  !! Предопределяемый атрибут !! Определение
 +
|-
 +
| $Role || http://schemas.microsoft.com/ws/2008/06/identity/claims/role || Роли пользователя
 +
|}
 +
</br>
 +
Пример использования предопределенного идентификатора атрибута токена в формуле.
 +
<syntaxhighlight lang="JSON" line>
 +
{
 +
"expression": "if(in('Test Role', [0]), 2, 3)",
 +
"operands": [
 +
  {
 +
"id": 0,
 +
"AttributeId": "$Role",
 +
"discriminator": "TokenAttributeFormulaOperandDto"
 +
  }
 +
],
 +
"discriminator": "FormulaDto"
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>

Версия 07:13, 27 октября 2020

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

  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. Добавляете атрибут и его значение.
Настройка значений атрибута пользователя в KeyCloak