[SecurityBundle] added user_providers option for remember_me

This commit is contained in:
Johannes M. Schmitt 2011-06-01 11:46:13 +02:00
parent 90b63ca346
commit d2fa6c3e4e

View File

@ -72,6 +72,7 @@ class RememberMeFactory implements SecurityFactoryInterface
$rememberMeServices->replaceArgument(3, array_intersect_key($config, $this->options));
// attach to remember-me aware listeners
if (!$config['user_providers']) {
$userProviders = array();
foreach ($container->findTaggedServiceIds('security.remember_me_aware') as $serviceId => $attributes) {
foreach ($attributes as $attribute) {
@ -93,6 +94,12 @@ class RememberMeFactory implements SecurityFactoryInterface
if (count($userProviders) === 0) {
throw new \RuntimeException('You must configure at least one remember-me aware listener (such as form-login) for each firewall that has remember-me enabled.');
}
} else {
$userProviders = array();
foreach ($config['user_providers'] as $providerName) {
$userProviders[] = new Reference('security.user.provider.concrete.'.$providerName);
}
}
$rememberMeServices->replaceArgument(0, $userProviders);
// remember-me listener
@ -115,11 +122,18 @@ class RememberMeFactory implements SecurityFactoryInterface
public function addConfiguration(NodeDefinition $node)
{
$node->fixXmlConfig('user_provider');
$builder = $node->children();
$builder
->scalarNode('key')->isRequired()->cannotBeEmpty()->end()
->scalarNode('token_provider')->end()
->arrayNode('user_providers')
->beforeNormalization()
->ifString()->then(function($v) { return array($v); })
->end()
->prototype('scalar')->end()
->end()
;
foreach ($this->options as $name => $value) {