Платформа 3V/Формы/Выражения/Параметры/Атрибут токена пользователя (EntryExpressionTokenAttributeParameter)
Для использования данных токена пользователя, можно воспользоваться операндом для выражения EntryExpressionTokenAttributeParameter, который возвращает значение выбранного атрибута токена пользователя. Он имеет следующую структуру:
1 {
2 "attributeId": "preferred_username",
3 "discriminator": "EntryExpressionTokenAttributeParameter",
4 "id": 1,
5 "allowMultipleValues": false
6 }
Содержание
Описание свойств параметра
Свойство | Описание |
---|---|
id | Идентификатор операнда |
allowMultipleValues | Флаг об получении результата в виде коллекции значений (true/false) |
discriminator | EntryExpressionTokenAttributeParameter |
attributeId | Идентификатор атрибута из токена. |
Обращение к некоторым атрибутам токена
Из-за особенностей реализации чтения атрибутов токена на текущий момент, к некоторым атрибутам необходимо обращаться по другому наименованию внутри платформы.
Общий перечень измененных имен атрибутов токена в платформе:
Наименование из токена атрибута (можно увидеть через https://jwt.io/) - значение из колонки слева с маленькой буквы JwtRegisteredClaimNames - https://docs.microsoft.com/en-us/dotnet/api/system.identitymodel.tokens.jwt.jwtregisteredclaimnames?view=azure-dotnet
Наименование атрибута в платформе - Значение из колонки из колонки справа - https://docs.microsoft.com/ru-ru/dotnet/api/system.security.claims.claimtypes?view=net-5.0
Название атрибута в токене | Название атрибута в платформе |
---|---|
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" | |
family_name | "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"
|
1 { /* пример чтения атрибута токена family_name */
2 "expression": "ToString([3])",
3 "returnFirstParameterValue": false,
4 "operands": [
5 {
6 "attributeId": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname",
7 "discriminator": "EntryExpressionTokenAttributeParameter",
8 "id": 3,
9 "allowMultipleValues": false
10 }
11 ],
12 "id": 1104,
13 "name": null,
14 "code": null
15 }
Пример использования в качестве параметра выражения
Кейс: Выставить в первый текстовое поле true/false, в зависимости от того, есть ли у пользователя роль администратора, или нет. Во второе текстовое поле выставить логин пользователя.
Ссылка на пример: https://study.3v-cloud.com/navigator/#/home?objectId=867
1 {
2 "id": 866,
3 "name": "чтение токена",
4 "description": null,
5 "title": "",
6 "uiSources": [
7 {
8 "trimSpaces": false,
9 "defaultValue": null,
10 "value": "",
11 "doActionOnChangeValue": false,
12 "rebuildDependentsObjectOnChange": true,
13 "expressionId": 1100,
14 "isNullable": true,
15 "onAfterChangeValueConditionalActions": [],
16 "onAfterChangeValueActions": [],
17 "onAfterChangeValueByClientActions": [],
18 "discriminator": "StringSourceEntry",
19 "id": 500,
20 "caption": "номер заказа",
21 "enable": true,
22 "visible": true,
23 "hint": null,
24 "enableRuleIds": [],
25 "enableExpressionIds": [],
26 "visibleRuleIds": [],
27 "visibleExpressionIds": []
28 },
29 {
30 "trimSpaces": false,
31 "defaultValue": null,
32 "value": "",
33 "doActionOnChangeValue": false,
34 "rebuildDependentsObjectOnChange": true,
35 "expressionId": 1101,
36 "isNullable": true,
37 "onAfterChangeValueConditionalActions": [],
38 "onAfterChangeValueActions": [],
39 "onAfterChangeValueByClientActions": [],
40 "discriminator": "StringSourceEntry",
41 "id": 501,
42 "caption": "номер заказа",
43 "enable": true,
44 "visible": true,
45 "hint": null,
46 "enableRuleIds": [],
47 "enableExpressionIds": [],
48 "visibleRuleIds": [],
49 "visibleExpressionIds": []
50 }
51 ],
52 "entryDataSources": [],
53 "parameters": [],
54 "binaryConditionsRules": [],
55 "submitValidateRules": [],
56 "expressions": [
57 {
58 "expression": "if (in('realm-admin', [1]), true, false)",
59 "returnFirstParameterValue": false,
60 "operands": [
61 {
62 "attributeId": "$Role",
63 "discriminator": "EntryExpressionTokenAttributeParameter",
64 "id": 1,
65 "allowMultipleValues": true
66 }
67 ],
68 "id": 1100,
69 "name": null,
70 "code": null
71 },
72 {
73 "expression": "[1]",
74 "returnFirstParameterValue": false,
75 "operands": [
76 {
77 "attributeId": "preferred_username",
78 "discriminator": "EntryExpressionTokenAttributeParameter",
79 "id": 1,
80 "allowMultipleValues": false
81 }
82 ],
83 "id": 1101,
84 "name": null,
85 "code": null
86 }
87 ],
88 "controlsValueCalculateRules": [],
89 "actions": [],
90 "conditionActionIdsOnOpen": [],
91 "actionIdsOnOpen": [],
92 "conditionalActions": [],
93 "selectionSets": [],
94 "reportTemplates": [],
95 "featureFlags": {
96 "useNewDependenciesBuilder": null,
97 "includeDataToDto": null,
98 "useLightDictionaryFormat": null,
99 "checkChangesPivotOnDtoBuild": null,
100 "ignoreCycles": null,
101 "ignoreMissingDependencies": null,
102 "convertModel": null
103 }
104 }