Commit 15512a29 authored by Deelight's avatar Deelight
Browse files

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

parent 39e0cf29
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -156,6 +156,11 @@ return [
         * à rappchcher ensuite de intervenant.utilisateurCode pour faire la correspondance utilisateur => intervenant */
        'utilisateurCode'              => 'supannEmpId',

        /* Filtre de code utilisateur.
         * Expression régulière permettant de selectionner une valeur spécifique d'un atttribut utilisateurCode multivalué (par exemple
         * supannRefId). Laisser commenté pour ne pas effectuer de filtrage. */
        //'utilisateurCodeFiltre'        => '/^{OSE}(.*)$/',

        /* Filtre de recherche d'utilisateurs pour les affectations */
        'utilisateurFiltre'            => '(eduPersonAffiliation=member)(!(eduPersonAffiliation=student))',

+5 −4
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ return [
                'LOGIN'      => AppConfig::get('ldap', 'loginAttribute'),
                'FILTER'     => AppConfig::get('ldap', 'utilisateurFiltre'),
                'CODE'       => AppConfig::get('ldap', 'utilisateurCode'),
                'CODEFILTER' => AppConfig::get('ldap', 'utilisateurCodeFiltre'),
            ],
        ],

+5 −1
Original line number Diff line number Diff line
@@ -54,6 +54,10 @@ class LdapConnecteurFactory
            $service->setUtilisateurCode( $configLdapUtilisateur['CODE'] );
        }

        if (isset($configLdapUtilisateur['CODEFILTER'])){
            $service->setUtilisateurCodeFiltre( $configLdapUtilisateur['CODEFILTER'] );
        }

        $service->setUtilisateurExtraMasque(\AppConfig::get('ldap', 'utilisateurExtraMasque', ''));
        $service->setUtilisateurExtraAttributes(\AppConfig::get('ldap', 'utilisateurExtraAttributes', []));

+48 −2
Original line number Diff line number Diff line
@@ -55,6 +55,11 @@ class LdapConnecteur extends AbstractService
     */
    private $utilisateurCode;

    /**
     * @var string
     */
    private $utilisateurCodeFiltre = '';

    /**
     * @var string
     */
@@ -205,8 +210,25 @@ class LdapConnecteur extends AbstractService
        $ldapUser = $this->serviceUserContext->getLdapUser();

        if ($ldapUser){
            // si utilisateur_code_filtre présent : regexp pour recupérer une valeur précise d'un attribut multivalué,
            // par exemple l'attribut étiqueté supannRefId
            $utilisateur_code_filtre = $this->getUtilisateurCodeFiltre();

            if ($utilisateur_code_filtre != '') {
                $utilisateur_courant_code = $this->getPeopleAttribute($ldapUser,$this->getUtilisateurCode());

                // si attribut multivalué, valeurs séparées par de virgules -> transformation en array
                $utilisateur_courant_code_arr = explode(',', $utilisateur_courant_code);

                foreach ($utilisateur_courant_code_arr as $utilisateur_courant_code_elem) {
                    if (preg_match($utilisateur_code_filtre, $utilisateur_courant_code_elem, $matches)) {
                        return $matches[1];
                    }
                }
            } else {
                return $this->getPeopleAttribute($ldapUser,$this->getUtilisateurCode());
            }
        }

        return null;
    }
@@ -285,6 +307,30 @@ class LdapConnecteur extends AbstractService



    /**
     * @return string
     */
    public function getUtilisateurCodeFiltre(): string
    {
        return $this->utilisateurCodeFiltre;
    }
 
 
 
    /**
     * @param string $utilisateurCodeFiltre
     *
     * @return LdapConnecteur
     */
    public function setUtilisateurCodeFiltre(string $utilisateurCodeFiltre): LdapConnecteur
    {
        $this->utilisateurCodeFiltre = $utilisateurCodeFiltre;
 
        return $this;
    }



    /**
     * @return string
     */