Commit b4cb8bde authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Merge branch 'master' into 'master'

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

See merge request !40
parents 361c9852 15512a29
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
@@ -58,6 +58,11 @@ class LdapConnecteur extends AbstractService
     */
    private $utilisateurCode;

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

    /**
     * @var string
     */
@@ -207,8 +212,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;
    }
@@ -287,6 +309,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
     */
+0 −0

File mode changed from 100644 to 100755.

Loading