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
Changes for config/module.config.php: 1 added line, 0 removed lines.
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
Changes for src/UnicaenAuth/Authentication/Adapter/AbstractFactory.php: 5 added lines, 2 removed lines.
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
Changes for src/UnicaenAuth/Authentication/Adapter/Cas.php: 0 added lines, 9 removed lines.
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
Changes for src/UnicaenAuth/Authentication/Adapter/Db.php: 0 added lines, 9 removed lines.
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
Changes for src/UnicaenAuth/Authentication/Adapter/Ldap.php: 1 added line, 10 removed lines.
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