Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

de:shibidp3verstecken_leere_attribute_consent [2016/11/10 11:55] (aktuell)
Steffen Dach angelegt
Zeile 1: Zeile 1:
 +====== Leere Attribute aus den User Consent ausblenden ======
  
 +Werden die Nutzerattribute im Attribute-Resolver über einen DataConnector vom Typ [[https://​wiki.shibboleth.net/​confluence/​display/​IDP30/​RelationalDatabaseConnector|RelationalDatabase]] bezogen, so werden sowohl leere Strings (""​) als auch NULL-Values über den Attributtyp [[https://​build.shibboleth.net/​nexus/​service/​local/​repositories/​site/​content/​java-identity-provider/​3.2.1/​apidocs/​net/​shibboleth/​idp/​attribute/​EmptyAttributeValue.html|EmptyAttributeValue]] kodiert.\\ ​
 +__(Es könnte bitte noch jemand bestätigen oder dementieren,​ ob dieses Verhalten auch für LDAP-Konnektoren zutrifft)__\\
 +Dies führt auf der Consent-Seite dazu, dass diese Attribute mit dem Wert "​NULL_VALUE"​ angezeigt werden. ​
 +Beispiele hierfür sind die Attribute dfnEduPersonTermsOfStudy,​ dfnEduPersonFieldOfStudyString oder ähnliche studienbezogene Attribute, die bei Mitarbeitern in der Regel leer oder NULL sind.\\
 +Um diese Attribute beim Consent auszublenden,​ kann eine Änderung an der Datei attribute-release.vm vorgenommen werden.
 +<file html views/​intercept/​attribute-release.vm>​
 +...
 +<div id="​attributeRelease">​
 + <​table>​
 +  <​thead>​
 +   <​tr>​
 +    <th colspan="​3">​
 +     #​springMessageText("​idp.attribute-release.attributesHeader",​ "​Information to be Provided to Service"​)
 +    </th>
 +   </​tr>​
 +  </​thead>​
 +  <​tbody>​
 +   #​foreach ($attribute in $attributeReleaseContext.getConsentableAttributes().values())
 +    #set( $empty = false)
 +    #​foreach($value in $attribute.values)
 +     #if ($value.class.name == "​net.shibboleth.idp.attribute.EmptyAttributeValue"​)
 +      #set ($empty = true)
 +      #break
 +     #end
 +    #end
 +    #​if(!$empty)
 +     <​tr>​
 +      <​td>​$encoder.encodeForHTML($attributeDisplayNameFunction.apply($attribute))</​td>​
 +      <td>
 +      #foreach ($value in $attribute.values)
 +       <​strong>​$encoder.encodeForHTML($value.getDisplayValue())</​strong>​
 +       <​br>​
 +      #end
 +      </td>
 +      <td style="​vertical-align:​ top">​
 +       #if ($attributeReleaseFlowDescriptor.perAttributeConsentEnabled)
 +        #set ($inputType = "​checkbox"​)
 +       #else
 +        #set ($inputType = "​hidden"​)
 +       #end
 +       <​input id="​$attribute.id"​ type="​$inputType"​ name="​_shib_idp_consentIds"​ value="​$encoder.encodeForHTML($attribute.id)"​ checked>
 +      </td>
 +     </​tr>​
 +    #end
 +   #end
 +  </​tbody>​
 + </​table>​
 +</​div>​
 +
 +...
 +</​file>​
 +
 +Hierbei wird in der foreach-Schleife geprüft, ob das anzuzeigende Attribut vom Typ EmptyAttributeValue ist (#if ($value.class.name == "​net.shibboleth.idp.attribute.EmptyAttributeValue"​)). Der Schalter "​empty"​ wird gesetzt und  die Tabellenzeile mit dem Attributnamen und dem Attributwert wird anschließend nicht ins HTML geschrieben.
  • Zuletzt geändert: vor 3 Jahren