Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
de:shibidp:config-per-attribute-consent [2021/05/03 14:29] – Silke Meyer | de:shibidp:config-per-attribute-consent [2025/04/28 11:16] (aktuell) – Anpassung des Velocity Template für IdP v5 bzgl. non-required Attribute Doreen Liebenau | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Per Attribute Consent für vom SP nicht ' | ====== Per Attribute Consent für vom SP nicht ' | ||
- | In den allgemeinen Properties ('' | + | In den allgemeinen Properties ('' |
- | Um das auf der Attribute-Release Seite zu berücksichtigen sind folgende zwei kleine | + | In der Default-Konfiguration des IdP werden mit dieser Einstellung |
+ | Folgende | ||
- | * Eine schon vorhandene IdP-Class | + | * Ergänzung |
- | + | <code> | |
- | <file xml system/ | + | |
... | ... | ||
- | 111 <!-- Display attribute release page. --> | + | #set ($requestClass |
- | 112 | + | #set ($isAttributeRequired |
- | 113 < | + | |
- | 114 < | + | |
- | 115 < | + | |
- | 116 < | + | |
- | 117 < | + | |
- | 118 < | + | |
- | 119 < | + | |
- | 120 < | + | |
- | 121 | + | |
- | 122 < | + | |
- | 123 | + | |
- | 124 < | + | |
- | 125 < | + | |
- | 126 | + | |
... | ... | ||
+ | </ | ||
+ | |||
+ | * Im Velocity Template die Checkbox für non-required Attribute anzeigen. Required Attribute werden ohne Checkbox angezeigt. Dazu wird in der Datei '' | ||
- | + | <code> | |
- | </file> | + | |
- | + | ||
- | * Im Velocity Template die Checkbox nur für non-required Attribute anzeigen. Dazu die Datei '' | + | |
- | + | ||
- | <file html4strict views/ | + | |
... | ... | ||
- | <!-- Attribute Liste - Tabelle Start --> | ||
- | <table class=" | ||
- | < | ||
- | <tr> | ||
- | <th colspan=" | ||
- | # | ||
- | </th> | ||
- | <th> | ||
- | <!-- check / uncheck all --> | ||
- | #if ($attributeReleaseFlowDescriptor.perAttributeConsentEnabled ) | ||
- | <script language=" | ||
- | function toggle(source) { | ||
- | checkboxes = document.getElementsByName(' | ||
- | for(var i=0, n=checkboxes.length; | ||
- | if(checkboxes[i].type != " | ||
- | checkboxes[i].checked = source.checked; | ||
- | } | ||
- | } | ||
- | } | ||
- | </ | ||
- | <input type=" | ||
- | #end | ||
- | </th> | ||
- | </tr> | ||
- | </ | ||
- | < | ||
#foreach ($attribute in $attributeReleaseContext.getConsentableAttributes().values()) | #foreach ($attribute in $attributeReleaseContext.getConsentableAttributes().values()) | ||
- | | + | |
- | <td> | + | <fieldset> |
- | $encoder.encodeForHTML($attributeDisplayNameFunction.apply($attribute)) | + | |
- | </td> | + | <label for="$attribute.id"> |
- | <td> | + | #else |
- | #foreach ($value in $attribute.values) | + | <p>$encoder.encodeForHTML($attributeDisplayNameFunction.apply($attribute))</ |
- | <strong> | + | <input id=" |
- | < | + | #end |
- | | + | |
- | </td> | + | |
- | < | + | |
- | #if ($attributeReleaseFlowDescriptor.perAttributeConsentEnabled ) | + | |
- | <!-- $attributeRequired.apply($attribute)) return " | + | |
- | #if (!$attributeRequired.apply($attribute)) | + | |
- | <!-- not required, allow to check separably --> | + | |
- | #set ($inputType = " | + | |
- | #else | + | |
- | <!-- required, don't allow to check separably --> | + | |
- | #set ($inputType = " | + | |
- | <!-- inform the user, that is a required attribute --> | + | |
- | < | + | |
- | # | + | |
- | #else | + | |
- | #set ($inputType = " | + | |
- | #end | + | |
- | | + | |
- | </td> | + | |
- | | + | |
- | | + | |
- | </ | + | |
- | ... | + | |
- | |||
- | </ | ||
- | |||
- | * Damit auch die Internationalisierung klappt, müssen die Message Properties noch ergänzt werden. | ||
- | |||
- | <file properties messages/ | ||
- | ... | ||
- | idp.attribute-release.ToggleAll = Alle | ||
- | idp.attribute-release.requiredLabel = notwendig | ||
... | ... | ||
+ | </ | ||
- | + | * durch: | |
- | </ | + | |
- | + | ||
- | Wird der AttributeQuery benutzt, muss auch hier der letzte Consent vom Nutzer beachtet werden. Dazu ist in '' | + | |
- | + | ||
- | Für das Propagieren des zusätzlichen Objektes in den Attribute-Release-Flow ist leider ein Neustart des IdP nötig. | + | |
- | + | ||
- | Wer sich davor scheut, den System Flow zu editieren, kann die Referenz auch direkt im Velocity Template holen. Das ist nicht unbedingt schön, aber funktional getestet mit dem IDP4. Das Instanziieren eines neuen Objekts ist in Velocity nicht vorgesehen, deswegen sieht der Code etwas abenteuerlich aus. Die Änderungen beschränken sich dann auf die Datei views/ | + | |
< | < | ||
- | |||
... | ... | ||
- | #set ($requestClass = $attributeReleaseContext.getClass().forName(" | + | #foreach |
- | #set ($isAttributeRequired = $attributeReleaseContext.getClass().forName("net.shibboleth.idp.consent.logic.impl.IsAttributeRequiredPredicate").getDeclaredConstructor($requestClass).newInstance($request)) | + | #if ($attributeReleaseFlowDescriptor.perAttributeConsentEnabled) |
+ | < | ||
+ | #if ($isAttributeRequired.test($attribute)) | ||
+ | <input id=" | ||
+ | #else | ||
+ | <input id=" | ||
+ | #end | ||
+ | <label for=" | ||
+ | #else | ||
+ | < | ||
+ | <input id=" | ||
+ | #end | ||
... | ... | ||
- | |||
</ | </ | ||
- | < | + | Wird der AttributeQuery benutzt, muss auch hier der letzte Consent vom Nutzer beachtet werden. Dazu ist in '' |
- | ... | + | |
- | < | + | |
- | #if ($attributeReleaseFlowDescriptor.perAttributeConsentEnabled && !($isAttributeRequired.apply($attribute))) | + | |
- | #set ($inputType = " | + | |
- | #else | + | |
- | #set ($inputType = " | + | |
- | #end | + | |
- | <input id=" | + | |
- | ... | + | |
- | </ | + | Für das Propagieren des zusätzlichen Objektes in den Attribute-Release-Flow ist leider ein Neustart des IdP nötig. |
- | <callout color="# | ||
- | Das Statement $isAttributeRequired.apply($attribute) produziert beim IDP4 eine Deprecation Warnung und muss durch $isAttributeRequired.test($attribute) ersetzt werden. Das gilt vermutlich auch für die Anleitung oben mit dem System flow. | ||
- | </ | ||
- | {{tag> | ||