diff --git a/config/module.config.php b/config/module.config.php index e031665b4a57ee2e64430bff0aad0f6bb931c541..7012282367ed50aa13c7337227640ba227d07e71 100644 --- a/config/module.config.php +++ b/config/module.config.php @@ -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. diff --git a/src/UnicaenAuth/Authentication/Adapter/AbstractFactory.php b/src/UnicaenAuth/Authentication/Adapter/AbstractFactory.php index 6a32bd9776f9ed6e46266898316d6fcccf929173..fa4e56d78416660267526cc5d4a33263b9a264f0 100644 --- a/src/UnicaenAuth/Authentication/Adapter/AbstractFactory.php +++ b/src/UnicaenAuth/Authentication/Adapter/AbstractFactory.php @@ -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; diff --git a/src/UnicaenAuth/Authentication/Adapter/Cas.php b/src/UnicaenAuth/Authentication/Adapter/Cas.php index d1b068921da2447f075c263618415047596b00d2..12cae0acbebdafc23a6f1618de849084b5d40312 100644 --- a/src/UnicaenAuth/Authentication/Adapter/Cas.php +++ b/src/UnicaenAuth/Authentication/Adapter/Cas.php @@ -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. * diff --git a/src/UnicaenAuth/Authentication/Adapter/Db.php b/src/UnicaenAuth/Authentication/Adapter/Db.php index 2f13e4c7f49e4d19dd701656d796eae98860d776..39b1c8d5595d5ff012971ad0586f25e7c42edcb0 100644 --- a/src/UnicaenAuth/Authentication/Adapter/Db.php +++ b/src/UnicaenAuth/Authentication/Adapter/Db.php @@ -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. * diff --git a/src/UnicaenAuth/Authentication/Adapter/Ldap.php b/src/UnicaenAuth/Authentication/Adapter/Ldap.php index 41f708703a94cda6385b8d575139155b733e65cf..711935d0d4574caa1b1351eefebbc8de25eae25e 100644 --- a/src/UnicaenAuth/Authentication/Adapter/Ldap.php +++ b/src/UnicaenAuth/Authentication/Adapter/Ldap.php @@ -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; } diff --git a/src/UnicaenAuth/Authentication/Storage/Chain.php b/src/UnicaenAuth/Authentication/Storage/Chain.php index bf958d08747eabe3709f9c96bb7bdef14f3ebbb9..c357b7963d2a50d6d9202c05a4bf5ea34c6bf596 100644 --- a/src/UnicaenAuth/Authentication/Storage/Chain.php +++ b/src/UnicaenAuth/Authentication/Storage/Chain.php @@ -163,9 +163,6 @@ class Chain implements StorageInterface, EventManagerAwareInterface */ public function getEventManager() { - if (null === $this->eventManager) { - $this->eventManager = new EventManager(); - } return $this->eventManager; } diff --git a/src/UnicaenAuth/Authentication/Storage/ChainServiceFactory.php b/src/UnicaenAuth/Authentication/Storage/ChainServiceFactory.php index ca4eafcb3cdce63d85b912262047cdc232970268..7318ad862db2e88466090b8b91fa043669e20e9e 100644 --- a/src/UnicaenAuth/Authentication/Storage/ChainServiceFactory.php +++ b/src/UnicaenAuth/Authentication/Storage/ChainServiceFactory.php @@ -4,7 +4,7 @@ namespace UnicaenAuth\Authentication\Storage; use Interop\Container\ContainerInterface; use UnicaenAuth\Options\ModuleOptions; -use Zend\EventManager\EventManager; +use UnicaenAuth\Event\EventManager; use Zend\ServiceManager\FactoryInterface; use Zend\ServiceManager\ServiceLocatorInterface; @@ -33,7 +33,7 @@ class ChainServiceFactory implements FactoryInterface $chain = new Chain(); /** @var EventManager $eventManager */ - $eventManager = $container->get('EventManager'); + $eventManager = $container->get(EventManager::class); $chain->setEventManager($eventManager); diff --git a/src/UnicaenAuth/Event/EventManager.php b/src/UnicaenAuth/Event/EventManager.php new file mode 100644 index 0000000000000000000000000000000000000000..d5bbabb14ed54fa0315b388cff2ec6293eff3eda --- /dev/null +++ b/src/UnicaenAuth/Event/EventManager.php @@ -0,0 +1,8 @@ + + */ +class EventManagerFactory +{ + + /** + * @param ContainerInterface $container + * @param string $requestedName + * @param array|null $options + * + * @return EventManager + */ + public function __invoke(ContainerInterface $container, $requestedName, $options = null) + { + $shared = $container->has('SharedEventManager') ? $container->get('SharedEventManager') : null; + $eventManager = new EventManager($shared); + + return $eventManager; + } +} \ No newline at end of file diff --git a/src/UnicaenAuth/Provider/Identity/ChainServiceFactory.php b/src/UnicaenAuth/Provider/Identity/ChainServiceFactory.php index 41c874b8765f0c9c951f1bfd57aff1e34005ca30..1909a84b83e22f4b6f9cb08d115323bdafd42ab9 100644 --- a/src/UnicaenAuth/Provider/Identity/ChainServiceFactory.php +++ b/src/UnicaenAuth/Provider/Identity/ChainServiceFactory.php @@ -4,8 +4,8 @@ namespace UnicaenAuth\Provider\Identity; use BjyAuthorize\Service\Authorize; use Interop\Container\ContainerInterface; +use UnicaenAuth\Event\EventManager; use UnicaenAuth\Service\UserContext; -use Zend\EventManager\EventManager; use Zend\ServiceManager\FactoryInterface; use Zend\ServiceManager\ServiceLocatorInterface; @@ -32,7 +32,7 @@ class ChainServiceFactory implements FactoryInterface $authorizeService = $container->get('BjyAuthorize\Service\Authorize'); /** @var EventManager $eventManager */ - $eventManager = $container->get('EventManager'); + $eventManager = $container->get(EventManager::class); $chain->setUserContextService($userContextService); $chain->setAuthorizeService($authorizeService);