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

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
(Новая страница: «Для фильтрации справочников в отчёте от значений Keycloak атрибута из токена пользователя н...»)
 
 
(не показано 10 промежуточных версий 5 участников)
Строка 1: Строка 1:
Для фильтрации справочников в отчёте от значений Keycloak атрибута из токена пользователя необходимо настроить атрибут в Keycloak для пользователя или роли, а затем использовать операнд на атрибуте токена [http://ссылканаTokenAttributeFormulaOperandDto] в фильтре справочника по формуле [http://ссылканаFormulaConditionalDictionaryFilterDto].
+
{{DISPLAYTITLE:Фильтрация справочников от значений атрибута из токена пользователя}}
 +
Для фильтрации справочников в отчёте от значений атрибута из токена пользователя:
 +
# Необходимо добавить пользовательский атрибут в токен [https://medium.com/@ravthiru/keycloak-retrieve-custom-attributes-in-access-token-1a2d5aef0caa Настройка пользовательского атрибута в Keycloak]
 +
# Заполнить значение атрибута для пользователя или роли [[#Настройка значений атрибута пользователя в KeyCloak]]
 +
# Использовать операнд на атрибуте токена [[Платформа_3V/Отчет/PivotDto/TokenAttributeFormulaOperandDto|'''TokenAttributeFormulaOperandDto''']] в фильтре справочника по формуле [[Платформа_3V/Отчет/PivotDto/FormulaConditionalDictionaryFilterDto|'''FormulaConditionalDictionaryFilterDto''']].
  
 
== Настройка фильтрации справочника в отчет по значению атрибута из токена ==
 
== Настройка фильтрации справочника в отчет по значению атрибута из токена ==
# Для фильтрации справочника по значению атрибута из токена необходимо использовать фильтра на формуле '''FormulaConditionalDictionaryFilterDto''' [http://ссылканаFormulaConditionalDictionaryFilterDto].
+
# Для фильтрации справочника по значению атрибута из токена необходимо использовать фильтр на формуле [[Платформа_3V/Отчет/PivotDto/FormulaConditionalDictionaryFilterDto|'''FormulaConditionalDictionaryFilterDto''']].
# В качестве операнда будет использоваться операнд на атрибуте токена '''TokenAttributeFormulaOperandDto''' [http://ссылканаTokenAttributeFormulaOperandDto].
+
# В качестве операнда будет использоваться операнд, который получает значения из атрибута в токена [[Платформа_3V/Отчет/PivotDto/TokenAttributeFormulaOperandDto|'''TokenAttributeFormulaOperandDto''']].
 
 
  
 
'''Пример фильтра для справочника отчёта по значению атрибута из токена:'''
 
'''Пример фильтра для справочника отчёта по значению атрибута из токена:'''
Строка 30: Строка 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>
Строка 39: Строка 68:
 
# Во вкладке пользователя выбираем вкладку "Attributes".
 
# Во вкладке пользователя выбираем вкладку "Attributes".
 
# Добавляете атрибут и его значение.
 
# Добавляете атрибут и его значение.
 +
# Необходимо убедиться, что для атрибута есть маппер в KeyCloak (1. Clients, Corp-engine, Mappers или 2. Client Scopes, Profile, Mappers).[[Платформа_3V/Права_доступа/Настройка_значений_атрибута_пользователя_в_KeyCloak|Подробнее]].
  
 
[[Файл:Настройка значений атрибута пользователя в KeyCloak.png|left|text-bottom|600px|thumb|Настройка значений атрибута пользователя в KeyCloak]]
 
[[Файл:Настройка значений атрибута пользователя в KeyCloak.png|left|text-bottom|600px|thumb|Настройка значений атрибута пользователя в KeyCloak]]

Текущая версия на 07:29, 23 ноября 2021

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

  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