Commit 98d21b92 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Problème de récupération du code de l'utilisateur courant si on désactive la...

Problème de récupération du code de l'utilisateur courant si on désactive la connexion via LDAP (contournement pb UnicaenAuth)
parent 22dc9fb1
Loading
Loading
Loading
Loading
+6 −22
Original line number Diff line number Diff line
@@ -280,37 +280,21 @@ class LdapConnecteur extends AbstractService



    /**
     * @return string
     */
    public function getUtilisateurCourantCode()
    public function getUtilisateurCourantCode(): ?string
    {
        $utilisateur = $this->getUtilisateurCourant();

        if ($utilisateur && $utilisateur->getCode()) return $utilisateur->getCode();
        if (!$utilisateur) return null;

        $ldapUser = $this->serviceUserContext->getLdapUser();
        if ($utilisateur->getCode()) return $utilisateur->getCode();

        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
            $utilisateurCodeFiltre = $this->getUtilisateurCodeFiltre();

            if ($utilisateurCodeFiltre != '') {
                $utilisateurCourantCode = $this->getPeopleAttribute($ldapUser, $this->getUtilisateurCode());
        if ($this->isActif()) {
            $ldapUser = $this->mapperPeople->findOneByUsername($utilisateur->getUsername());

                // si attribut multivalué, valeurs séparées par de virgules -> transformation en array
                $utilisateurCourantCodeArr = explode(',', $utilisateurCourantCode);
            if (!$ldapUser) return null;

                foreach ($utilisateurCourantCodeArr as $utilisateurCourantCodeElem) {
                    if (preg_match($utilisateurCodeFiltre, $utilisateurCourantCodeElem, $matches)) {
                        return $matches[1];
                    }
                }
            } else {
            return $this->getPeopleAttribute($ldapUser, $this->getUtilisateurCode());
        }
        }

        return null;
    }