[SecurityBundle] Refactored the configuration
The configuration is now cleaner by avoiding using prototyped nodes as additional keys. This is a BC break for existing providers. - MemoryProvider: security: providers: my_provider: memory: # this level has been added users: # ... - ChainProvider: security: providers: my_provider: chain: # This level has been added providers: # ...
This commit is contained in:
parent
633f0e9d77
commit
b107a3fdf0
@ -40,11 +40,6 @@ class EntityFactory implements UserProviderFactoryInterface
|
||||
return 'entity';
|
||||
}
|
||||
|
||||
public function getFixableKey()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public function addConfiguration(NodeDefinition $node)
|
||||
{
|
||||
$node
|
||||
|
@ -301,29 +301,26 @@ class MainConfiguration implements ConfigurationInterface
|
||||
->prototype('array')
|
||||
;
|
||||
|
||||
/** @var $providerNodeBuilder \Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition */
|
||||
$providerNodeBuilder
|
||||
->children()
|
||||
->scalarNode('id')->end()
|
||||
->end()
|
||||
->fixXmlConfig('provider')
|
||||
->children()
|
||||
->arrayNode('providers')
|
||||
->beforeNormalization()
|
||||
->ifString()
|
||||
->then(function($v) { return preg_split('/\s*,\s*/', $v); })
|
||||
->arrayNode('chain')
|
||||
->fixXmlConfig('provider')
|
||||
->children()
|
||||
->arrayNode('providers')
|
||||
->beforeNormalization()
|
||||
->ifString()
|
||||
->then(function($v) { return preg_split('/\s*,\s*/', $v); })
|
||||
->end()
|
||||
->prototype('scalar')->end()
|
||||
->end()
|
||||
->end()
|
||||
->prototype('scalar')->end()
|
||||
->end()
|
||||
->end()
|
||||
;
|
||||
|
||||
/** @var $factory \Symfony\Bundle\SecurityBundle\DependencyInjection\Security\UserProvider\UserProviderFactoryInterface */
|
||||
foreach ($this->userProviderFactories as $factory) {
|
||||
$name = str_replace('-', '_', $factory->getKey());
|
||||
if (null !== $factory->getFixableKey()) {
|
||||
$providerNodeBuilder->fixXmlConfig($factory->getFixableKey(), $name);
|
||||
}
|
||||
$factoryNode = $providerNodeBuilder->children()->arrayNode($name)->canBeUnset();
|
||||
|
||||
$factory->addConfiguration($factoryNode);
|
||||
|
@ -29,8 +29,7 @@ class InMemoryFactory implements UserProviderFactoryInterface
|
||||
{
|
||||
$definition = $container->setDefinition($id, new DefinitionDecorator('security.user.provider.in_memory'));
|
||||
|
||||
|
||||
foreach ($config as $username => $user) {
|
||||
foreach ($config['users'] as $username => $user) {
|
||||
$userId = $id.'_'.$username;
|
||||
|
||||
$container
|
||||
@ -44,24 +43,24 @@ class InMemoryFactory implements UserProviderFactoryInterface
|
||||
|
||||
public function getKey()
|
||||
{
|
||||
return 'users';
|
||||
}
|
||||
|
||||
public function getFixableKey()
|
||||
{
|
||||
return 'user';
|
||||
return 'memory';
|
||||
}
|
||||
|
||||
public function addConfiguration(NodeDefinition $node)
|
||||
{
|
||||
$node
|
||||
->useAttributeAsKey('name')
|
||||
->prototype('array')
|
||||
->children()
|
||||
->scalarNode('password')->defaultValue(uniqid())->end()
|
||||
->arrayNode('roles')
|
||||
->beforeNormalization()->ifString()->then(function($v) { return preg_split('/\s*,\s*/', $v); })->end()
|
||||
->prototype('scalar')->end()
|
||||
->fixXmlConfig('user')
|
||||
->children()
|
||||
->arrayNode('users')
|
||||
->useAttributeAsKey('name')
|
||||
->prototype('array')
|
||||
->children()
|
||||
->scalarNode('password')->defaultValue(uniqid())->end()
|
||||
->arrayNode('roles')
|
||||
->beforeNormalization()->ifString()->then(function($v) { return preg_split('/\s*,\s*/', $v); })->end()
|
||||
->prototype('scalar')->end()
|
||||
->end()
|
||||
->end()
|
||||
->end()
|
||||
->end()
|
||||
->end()
|
||||
|
@ -26,7 +26,5 @@ interface UserProviderFactoryInterface
|
||||
|
||||
function getKey();
|
||||
|
||||
function getFixableKey();
|
||||
|
||||
function addConfiguration(NodeDefinition $builder);
|
||||
}
|
||||
|
@ -472,9 +472,9 @@ class SecurityExtension extends Extension
|
||||
}
|
||||
|
||||
// Chain provider
|
||||
if ($provider['providers']) {
|
||||
if (isset($provider['chain'])) {
|
||||
$providers = array();
|
||||
foreach ($provider['providers'] as $providerName) {
|
||||
foreach ($provider['chain']['providers'] as $providerName) {
|
||||
$providers[] = new Reference($this->getUserProviderId(strtolower($providerName)));
|
||||
}
|
||||
|
||||
|
@ -18,26 +18,34 @@ $container->loadFromExtension('security', array(
|
||||
),
|
||||
'providers' => array(
|
||||
'default' => array(
|
||||
'users' => array(
|
||||
'foo' => array('password' => 'foo', 'roles' => 'ROLE_USER'),
|
||||
'memory' => array(
|
||||
'users' => array(
|
||||
'foo' => array('password' => 'foo', 'roles' => 'ROLE_USER'),
|
||||
),
|
||||
),
|
||||
),
|
||||
'digest' => array(
|
||||
'users' => array(
|
||||
'foo' => array('password' => 'foo', 'roles' => 'ROLE_USER, ROLE_ADMIN'),
|
||||
'memory' => array(
|
||||
'users' => array(
|
||||
'foo' => array('password' => 'foo', 'roles' => 'ROLE_USER, ROLE_ADMIN'),
|
||||
),
|
||||
),
|
||||
),
|
||||
'basic' => array(
|
||||
'users' => array(
|
||||
'foo' => array('password' => '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33', 'roles' => 'ROLE_SUPER_ADMIN'),
|
||||
'bar' => array('password' => '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33', 'roles' => array('ROLE_USER', 'ROLE_ADMIN')),
|
||||
'memory' => array(
|
||||
'users' => array(
|
||||
'foo' => array('password' => '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33', 'roles' => 'ROLE_SUPER_ADMIN'),
|
||||
'bar' => array('password' => '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33', 'roles' => array('ROLE_USER', 'ROLE_ADMIN')),
|
||||
),
|
||||
),
|
||||
),
|
||||
'service' => array(
|
||||
'id' => 'user.manager',
|
||||
),
|
||||
'chain' => array(
|
||||
'providers' => array('service', 'basic'),
|
||||
'chain' => array(
|
||||
'providers' => array('service', 'basic'),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
|
@ -17,21 +17,29 @@
|
||||
<encoder class="JMS\FooBundle\Entity\User4" id="security.encoder.foo" />
|
||||
|
||||
<provider name="default">
|
||||
<user name="foo" password="foo" roles="ROLE_USER" />
|
||||
<memory>
|
||||
<user name="foo" password="foo" roles="ROLE_USER" />
|
||||
</memory>
|
||||
</provider>
|
||||
|
||||
<provider name="digest">
|
||||
<user name="foo" password="foo" roles="ROLE_USER, ROLE_ADMIN" />
|
||||
<memory>
|
||||
<user name="foo" password="foo" roles="ROLE_USER, ROLE_ADMIN" />
|
||||
</memory>
|
||||
</provider>
|
||||
|
||||
<provider name="basic">
|
||||
<user name="foo" password="0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33" roles="ROLE_SUPER_ADMIN" />
|
||||
<user name="bar" password="0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33" roles="ROLE_USER, ROLE_ADMIN" />
|
||||
<memory>
|
||||
<user name="foo" password="0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33" roles="ROLE_SUPER_ADMIN" />
|
||||
<user name="bar" password="0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33" roles="ROLE_USER, ROLE_ADMIN" />
|
||||
</memory>
|
||||
</provider>
|
||||
|
||||
<provider name="service" id="user.manager" />
|
||||
|
||||
<provider name="chain" providers="service, basic" />
|
||||
<provider name="chain">
|
||||
<chain providers="service, basic" />
|
||||
</provider>
|
||||
|
||||
<firewall name="simple" pattern="/login" security="false" />
|
||||
|
||||
|
@ -13,19 +13,23 @@ security:
|
||||
|
||||
providers:
|
||||
default:
|
||||
users:
|
||||
foo: { password: foo, roles: ROLE_USER }
|
||||
memory:
|
||||
users:
|
||||
foo: { password: foo, roles: ROLE_USER }
|
||||
digest:
|
||||
users:
|
||||
foo: { password: foo, roles: 'ROLE_USER, ROLE_ADMIN' }
|
||||
memory:
|
||||
users:
|
||||
foo: { password: foo, roles: 'ROLE_USER, ROLE_ADMIN' }
|
||||
basic:
|
||||
users:
|
||||
foo: { password: 0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33, roles: ROLE_SUPER_ADMIN }
|
||||
bar: { password: 0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33, roles: [ROLE_USER, ROLE_ADMIN] }
|
||||
memory:
|
||||
users:
|
||||
foo: { password: 0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33, roles: ROLE_SUPER_ADMIN }
|
||||
bar: { password: 0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33, roles: [ROLE_USER, ROLE_ADMIN] }
|
||||
service:
|
||||
id: user.manager
|
||||
chain:
|
||||
providers: [service, basic]
|
||||
chain:
|
||||
providers: [service, basic]
|
||||
|
||||
|
||||
firewalls:
|
||||
|
Reference in New Issue
Block a user