Commit 090ecaa5 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Résolution définitive du bug lié aux données de login résiduelles en mémoire après déconnexion.

Utilisation de la config pour la recherche LDAP en cas d'usurpation d'identité.
Mise en place d'un EventManager unique et dédié à UnicaenAuth
parent 9077cae7
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -494,6 +494,7 @@ return [

            'UnicaenApp\HistoriqueListener' => HistoriqueListenerFactory::class,
            'UnicaenAuth\HistoriqueListener' => HistoriqueListenerFactory::class,
            \UnicaenAuth\Event\EventManager::class => \UnicaenAuth\Event\EventManagerFactory::class,
        ],
        'lazy_services' => [
            // Mapping services to their class names is required since the ServiceManager is not a declarative DIC.
+5 −2
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ use Interop\Container\ContainerInterface;
use UnicaenApp\Exception\LogicException;
use UnicaenAuth\Options\ModuleOptions;
use UnicaenAuth\Service\User;
use Zend\EventManager\EventManager;
use UnicaenAuth\Event\EventManager;
use Zend\EventManager\EventManagerAwareInterface;
use Zend\Router\Http\TreeRouteStack;
use Zend\ServiceManager\AbstractFactoryInterface;
@@ -62,10 +62,13 @@ class AbstractFactory implements AbstractFactoryInterface

        if ($adapter instanceof EventManagerAwareInterface) {
            /** @var EventManager $eventManager */
            $eventManager = $container->get('EventManager');
            $eventManager = $container->get(EventManager::class);
            $adapter->setEventManager($eventManager);
            $userService = $container->get('unicaen-auth_user_service'); /* @var $userService \UnicaenAuth\Service\User */
            $eventManager->attach('userAuthenticated', [$userService, 'userAuthenticated'], 100);
            $eventManager->attach('clear', function() use ($adapter){
                $adapter->getStorage()->clear();
            });
        }

        return $adapter;
+0 −9
Original line number Diff line number Diff line
@@ -78,15 +78,6 @@ class Cas extends AbstractAdapter implements EventManagerAwareInterface
        $this->router = $router;
    }

    public function getStorage()
    {
        if (null === $this->storage) {
            $this->setStorage(new Session());
        }

        return $this->storage;
    }
    
    /**
     * Réalise l'authentification.
     *
+0 −9
Original line number Diff line number Diff line
@@ -37,15 +37,6 @@ class Db extends \ZfcUser\Authentication\Adapter\Db implements ServiceLocatorAwa
        return $this;
    }

    public function getStorage()
    {
        if (null === $this->storage) {
            $this->setStorage(new Session());
        }

        return $this->storage;
    }

    /**
     * Authentification.
     *
+1 −10
Original line number Diff line number Diff line
@@ -78,15 +78,6 @@ class Ldap extends AbstractAdapter implements EventManagerAwareInterface
        $this->appModuleOptions = $appModuleOptions;
    }

    public function getStorage()
    {
        if (null === $this->storage) {
            $this->setStorage(new Session());
        }

        return $this->storage;
    }
    
    /**
     *
     * @param EventInterface $e
@@ -224,7 +215,7 @@ class Ldap extends AbstractAdapter implements EventManagerAwareInterface
        // verif existence du login usurpé
        if ($this->usernameUsurpe) {
            // s'il nexiste pas, échec de l'authentification
            if (!$this->getLdapAuthAdapter()->getLdap()->searchEntries("(supannAliasLogin=$this->usernameUsurpe)")) {
            if (!@$this->getLdapAuthAdapter()->getLdap()->searchEntries("(".$this->getOptions()->getLdapUsername()."=$this->usernameUsurpe)")) {
                $this->usernameUsurpe = null;
                $success              = false;
            }
Loading