Skip to content
Snippets Groups Projects

Mise en place d'un paramètre optionnel pour filtrer les valeurs d'un attribut ldap multivalué.

Merged Frédéric Jacquot requested to merge (removed):master into master
1 unresolved thread

Modification mise en place à l'Université Lyon 2 pour pouvoir utiliser l'attribut SUPANN supannRefId afin de récupérer le code utilisateur.

Cette merge request propose la création d'un nouveau paramètre de configuration optionnel qui définit une expression régulière permettant de filtrer les valeurs d'un attribut multivalué. Dans l'exemple de l'attribut supannRefId (https://services.renater.fr/documentation/supann/supann2018/recommandations2018/attributs/supannrefid), cela permet d'indiquer l'étiquette de la valeur a récupérer.

Exemple : 'utilisateurCodeFiltre' => '/^{SIHAM}(.*)$/'

Dans notre contexte, certains utilisateurs ont besoin d'accéder à OSE avant d'avoir été insérés dans SIHAM. On a donc défini dans notre annuaire une valeur de supannRefId spécifique pour OSE, de la forme {OSE}xxxxxx.

Nous avons donc configuré le filtre : 'utilisateurCodeFiltre' => '/^{OSE}(.*)$/'

Merge request reports

Approval is optional

Merged by Laurent LecluseLaurent Lecluse 6 years ago (May 24, 2019 7:11am UTC)

Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
205 210 $ldapUser = $this->serviceUserContext->getLdapUser();
206 211
207 212 if ($ldapUser){
208 return $this->getPeopleAttribute($ldapUser,$this->getUtilisateurCode());
213 // si utilisateur_code_filtre présent : regexp pour recupérer une valeur précise d'un attribut multivalué,
214 // par exemple l'attribut étiqueté supannRefId
215 $utilisateur_code_filtre = $this->getUtilisateurCodeFiltre();
216
217 if ($utilisateur_code_filtre != '') {
218 $utilisateur_courant_code = $this->getPeopleAttribute($ldapUser,$this->getUtilisateurCode());
219
220 // si attribut multivalué, valeurs séparées par de virgules -> transformation en array
221 $utilisateur_courant_code_arr = explode(',', $utilisateur_courant_code);
  • Cette transformation échouera si une des valeurs de l'attribut contient une virgule, mais je préférais éviter de modifier le comportement pré-existant de la fonction getPeopleAttribute(), qui concatène les valeurs multiples avec une virgule.

  • Please register or sign in to reply
  • Laurent Lecluse mentioned in commit b4cb8bde

    mentioned in commit b4cb8bde

  • Please register or sign in to reply
    Loading