From ac754f1b3225621ce5d2a545548cd8db53e5148e Mon Sep 17 00:00:00 2001 From: Blinden Date: Wed, 21 Aug 2013 11:49:45 +0200 Subject: [PATCH 1/2] Configuration of validators in SessionManagerFactory --- library/Zend/Session/Service/SessionManagerFactory.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/library/Zend/Session/Service/SessionManagerFactory.php b/library/Zend/Session/Service/SessionManagerFactory.php index 81a0d6e011c..7e7372f5311 100644 --- a/library/Zend/Session/Service/SessionManagerFactory.php +++ b/library/Zend/Session/Service/SessionManagerFactory.php @@ -53,6 +53,7 @@ class SessionManagerFactory implements FactoryInterface * - enable_default_container_manager: whether to inject the created instance * as the default manager for Container instances. The default value for * this is true; set it to false to disable. + * - validators: ... * * @param ServiceLocatorInterface $services * @return SessionManager @@ -112,6 +113,15 @@ public function createService(ServiceLocatorInterface $services) ) { $managerConfig = array_merge($managerConfig, $configService['session_manager']); } + // Attach validators to session manager, if any + if (isset($managerConfig['validators'])) { + $chain = $manager->getValidatorChain(); + foreach ($managerConfig['validators'] as $validator) { + $validator = new $validator(); + $chain->attach('session.validate', array($validator, 'isValid')); + + } + } } // If configuration enables the session manager as the default manager for container From 3f8163356f47407fc24f86179a9d5a0831f8b780 Mon Sep 17 00:00:00 2001 From: Blinden Date: Thu, 22 Aug 2013 15:55:23 +0200 Subject: [PATCH 2/2] Added tests for configuration of validators in SessionManagerFactory --- .../Session/Service/SessionManagerFactoryTest.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/ZendTest/Session/Service/SessionManagerFactoryTest.php b/tests/ZendTest/Session/Service/SessionManagerFactoryTest.php index ee43f0b7e00..b25117f59ca 100644 --- a/tests/ZendTest/Session/Service/SessionManagerFactoryTest.php +++ b/tests/ZendTest/Session/Service/SessionManagerFactoryTest.php @@ -74,4 +74,17 @@ public function testCanDisableContainerDefaultManagerInjectionViaConfiguration() $manager = $this->services->get('Zend\Session\ManagerInterface'); $this->assertNotSame($manager, Container::getDefaultManager()); } + + public function testFactoryWillAddValidatorViaConfiguration() + { + $config = array('session_manager' => array( + 'validators' => array( + 'Zend\Session\Validator\RemoteAddr', + ), + )); + $this->services->setService('Config', $config); + $manager = $this->services->get('Zend\Session\ManagerInterface'); + + $this->assertEquals(1, $manager->getValidatorChain()->getListeners('session.validate')->count()); + } }