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