Skip to content

Commit ad1b56b

Browse files
blanchonvincentfabpot
authored andcommitted
[SecurityBundle] Firewall providers building - code cleaning
1 parent 7393b7e commit ad1b56b

File tree

3 files changed

+56
-27
lines changed

3 files changed

+56
-27
lines changed

DependencyInjection/SecurityExtension.php

Lines changed: 3 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,7 @@ private function createUserDaoProvider($name, $provider, ContainerBuilder $conta
495495
{
496496
$name = $this->getUserProviderId(strtolower($name));
497497

498+
// Doctrine Entity and In-memory DAO provider are managed by factories
498499
foreach ($this->userProviderFactories as $factory) {
499500
$key = str_replace('-', '_', $factory->getKey());
500501

@@ -521,37 +522,12 @@ private function createUserDaoProvider($name, $provider, ContainerBuilder $conta
521522

522523
$container
523524
->setDefinition($name, new DefinitionDecorator('security.user.provider.chain'))
524-
->addArgument($providers)
525-
;
526-
527-
return $name;
528-
}
529-
530-
// Doctrine Entity DAO provider
531-
if (isset($provider['entity'])) {
532-
$container
533-
->setDefinition($name, new DefinitionDecorator('security.user.provider.entity'))
534-
->addArgument($provider['entity']['class'])
535-
->addArgument($provider['entity']['property'])
536-
;
525+
->addArgument($providers);
537526

538527
return $name;
539528
}
540529

541-
// In-memory DAO provider
542-
$definition = $container->setDefinition($name, new DefinitionDecorator('security.user.provider.in_memory'));
543-
foreach ($provider['users'] as $username => $user) {
544-
$userId = $name.'_'.$username;
545-
546-
$container
547-
->setDefinition($userId, new DefinitionDecorator('security.user.provider.in_memory.user'))
548-
->setArguments(array($username, (string) $user['password'], $user['roles']))
549-
;
550-
551-
$definition->addMethodCall('createUser', array(new Reference($userId)));
552-
}
553-
554-
return $name;
530+
throw new InvalidConfigurationException(sprintf('Unable to create definition for "%s" user provider', $name));
555531
}
556532

557533
private function getUserProviderId($name)
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
namespace Symfony\Bundle\SecurityBundle\Tests\DependencyInjection\Fixtures\UserProvider;
4+
5+
use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\UserProvider\UserProviderFactoryInterface;
6+
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
7+
use Symfony\Component\DependencyInjection\ContainerBuilder;
8+
9+
class DummyProvider implements UserProviderFactoryInterface
10+
{
11+
public function create(ContainerBuilder $container, $id, $config)
12+
{
13+
14+
}
15+
16+
public function getKey()
17+
{
18+
return 'foo';
19+
}
20+
21+
public function addConfiguration(NodeDefinition $node)
22+
{
23+
24+
}
25+
}

Tests/DependencyInjection/SecurityExtensionTest.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use Symfony\Bundle\SecurityBundle\DependencyInjection\SecurityExtension;
1515
use Symfony\Bundle\SecurityBundle\SecurityBundle;
16+
use Symfony\Bundle\SecurityBundle\Tests\DependencyInjection\Fixtures\UserProvider\DummyProvider;
1617
use Symfony\Component\DependencyInjection\ContainerBuilder;
1718

1819
class SecurityExtensionTest extends \PHPUnit_Framework_TestCase
@@ -66,6 +67,33 @@ public function testFirewallWithoutAuthenticationListener()
6667
$container->compile();
6768
}
6869

70+
/**
71+
* @expectedException \Symfony\Component\Config\Definition\Exception\InvalidConfigurationException
72+
* @expectedExceptionMessage Unable to create definition for "security.user.provider.concrete.my_foo" user provider
73+
*/
74+
public function testFirewallWithInvalidUserProvider()
75+
{
76+
$container = $this->getRawContainer();
77+
78+
$extension = $container->getExtension('security');
79+
$extension->addUserProviderFactory(new DummyProvider());
80+
81+
$container->loadFromExtension('security', array(
82+
'providers' => array(
83+
'my_foo' => array('foo' => []),
84+
),
85+
86+
'firewalls' => array(
87+
'some_firewall' => array(
88+
'pattern' => '/.*',
89+
'http_basic' => [],
90+
),
91+
),
92+
));
93+
94+
$container->compile();
95+
}
96+
6997
protected function getRawContainer()
7098
{
7199
$container = new ContainerBuilder();

0 commit comments

Comments
 (0)