From 24319bb0f4e66a269c47d5ed9d2c2896b3620fc7 Mon Sep 17 00:00:00 2001 From: Christophe Coevoet Date: Mon, 19 Dec 2011 22:06:49 +0100 Subject: [PATCH] [DoctrineBridge] Made it possible to change the manager used by the provider --- .../Security/User/EntityUserProvider.php | 4 +++- .../Security/UserProvider/EntityFactory.php | 2 ++ .../DoctrineBundle/Resources/config/orm.xml | 2 +- .../Security/User/EntityUserProviderTest.php | 17 ++++++++++++++--- 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/Symfony/Bridge/Doctrine/Security/User/EntityUserProvider.php b/src/Symfony/Bridge/Doctrine/Security/User/EntityUserProvider.php index 2b243d329c41..a151e70f5bb8 100644 --- a/src/Symfony/Bridge/Doctrine/Security/User/EntityUserProvider.php +++ b/src/Symfony/Bridge/Doctrine/Security/User/EntityUserProvider.php @@ -11,6 +11,7 @@ namespace Symfony\Bridge\Doctrine\Security\User; +use Doctrine\Common\Persistence\ManagerRegistry; use Doctrine\Common\Persistence\ObjectManager; use Symfony\Component\Security\Core\Exception\UnsupportedUserException; use Symfony\Component\Security\Core\Exception\UsernameNotFoundException; @@ -32,8 +33,9 @@ class EntityUserProvider implements UserProviderInterface private $property; private $metadata; - public function __construct(ObjectManager $em, $class, $property = null) + public function __construct(ManagerRegistry $registry, $class, $property = null, $managerName = null) { + $em = $registry->getManager($managerName); $this->class = $class; $this->metadata = $em->getClassMetadata($class); diff --git a/src/Symfony/Bundle/DoctrineBundle/DependencyInjection/Security/UserProvider/EntityFactory.php b/src/Symfony/Bundle/DoctrineBundle/DependencyInjection/Security/UserProvider/EntityFactory.php index 9bb1cb8db334..c6621f2e9a57 100644 --- a/src/Symfony/Bundle/DoctrineBundle/DependencyInjection/Security/UserProvider/EntityFactory.php +++ b/src/Symfony/Bundle/DoctrineBundle/DependencyInjection/Security/UserProvider/EntityFactory.php @@ -31,6 +31,7 @@ public function create(ContainerBuilder $container, $id, $config) ->setDefinition($id, new DefinitionDecorator('doctrine.orm.security.user.provider')) ->addArgument($config['class']) ->addArgument($config['property']) + ->addArgument($config['manager_name']) ; } @@ -45,6 +46,7 @@ public function addConfiguration(NodeDefinition $node) ->children() ->scalarNode('class')->isRequired()->cannotBeEmpty()->end() ->scalarNode('property')->defaultNull()->end() + ->scalarNode('manager_name')->defaultNull()->end() ->end() ; } diff --git a/src/Symfony/Bundle/DoctrineBundle/Resources/config/orm.xml b/src/Symfony/Bundle/DoctrineBundle/Resources/config/orm.xml index 9bed7cca1cfc..0bd04ba5afed 100644 --- a/src/Symfony/Bundle/DoctrineBundle/Resources/config/orm.xml +++ b/src/Symfony/Bundle/DoctrineBundle/Resources/config/orm.xml @@ -75,7 +75,7 @@ - + diff --git a/tests/Symfony/Tests/Bridge/Doctrine/Security/User/EntityUserProviderTest.php b/tests/Symfony/Tests/Bridge/Doctrine/Security/User/EntityUserProviderTest.php index 70273bc6e4ff..e77c96a3228f 100644 --- a/tests/Symfony/Tests/Bridge/Doctrine/Security/User/EntityUserProviderTest.php +++ b/tests/Symfony/Tests/Bridge/Doctrine/Security/User/EntityUserProviderTest.php @@ -33,7 +33,7 @@ public function testRefreshUserGetsUserByPrimaryKey() $em->persist($user2); $em->flush(); - $provider = new EntityUserProvider($em, 'Symfony\Tests\Bridge\Doctrine\Fixtures\CompositeIdentEntity', 'name'); + $provider = new EntityUserProvider($this->getManager($em), 'Symfony\Tests\Bridge\Doctrine\Fixtures\CompositeIdentEntity', 'name'); // try to change the user identity $user1->name = 'user2'; @@ -46,7 +46,7 @@ public function testRefreshUserRequiresId() $em = $this->createTestEntityManager(); $user1 = new CompositeIdentEntity(null, null, 'user1'); - $provider = new EntityUserProvider($em, 'Symfony\Tests\Bridge\Doctrine\Fixtures\CompositeIdentEntity', 'name'); + $provider = new EntityUserProvider($this->getManager($em), 'Symfony\Tests\Bridge\Doctrine\Fixtures\CompositeIdentEntity', 'name'); $this->setExpectedException( 'InvalidArgumentException', @@ -65,7 +65,7 @@ public function testRefreshInvalidUser() $em->persist($user1); $em->flush(); - $provider = new EntityUserProvider($em, 'Symfony\Tests\Bridge\Doctrine\Fixtures\CompositeIdentEntity', 'name'); + $provider = new EntityUserProvider($this->getManager($em), 'Symfony\Tests\Bridge\Doctrine\Fixtures\CompositeIdentEntity', 'name'); $user2 = new CompositeIdentEntity(1, 2, 'user2'); $this->setExpectedException( @@ -92,6 +92,17 @@ public function testSupportProxy() $this->assertTrue($provider->supportsClass(get_class($user2))); } + private function getManager($em, $name = null) + { + $manager = $this->getMock('Doctrine\Common\Persistence\ManagerRegistry'); + $manager->expects($this->once()) + ->method('getManager') + ->with($this->equalTo($name)) + ->will($this->returnValue($em)); + + return $manager; + } + private function createSchema($em) { $schemaTool = new SchemaTool($em);