Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[Security] config refactoring
  • Loading branch information
schmittjoh authored and fabpot committed Jan 29, 2011
1 parent 65eb70d commit e23f39c
Show file tree
Hide file tree
Showing 11 changed files with 394 additions and 350 deletions.
Expand Up @@ -11,6 +11,7 @@

namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory;

use Symfony\Component\DependencyInjection\DefinitionDecorator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;

Expand All @@ -25,15 +26,15 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider,
{
$provider = 'security.authentication.provider.dao.'.$id;
$container
->register($provider, '%security.authentication.provider.dao.class%')
->setArguments(array(new Reference($userProvider), new Reference('security.account_checker'), $id, new Reference('security.encoder_factory')))
->setPublic(false)
->setDefinition($provider, new DefinitionDecorator('security.authentication.provider.dao'))
->setArgument(0, new Reference($userProvider))
->setArgument(2, $id)
->addTag('security.authentication_provider')
;

// listener
$listenerId = 'security.authentication.listener.form.'.$id;
$listener = $container->setDefinition($listenerId, clone $container->getDefinition('security.authentication.listener.form'));
$listener = $container->setDefinition($listenerId, new DefinitionDecorator('security.authentication.listener.form'));
$listener->setArgument(3, $id);

// add remember-me tag
Expand All @@ -60,7 +61,7 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider,
'failure_forward' => false,
);
foreach (array_keys($options) as $key) {
if (isset($config[$key])) {
if (array_key_exists($key, $config)) {
$options[$key] = $config[$key];
}
}
Expand All @@ -83,8 +84,12 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider,
}

// form entry point
$entryPoint = $container->setDefinition($entryPointId = 'security.authentication.form_entry_point.'.$id, clone $container->getDefinition('security.authentication.form_entry_point'));
$entryPoint->setArguments(array($options['login_path'], $options['use_forward']));
$entryPointId = 'security.authentication.form_entry_point.'.$id;
$container
->setDefinition($entryPointId, new DefinitionDecorator('security.authentication.form_entry_point'))
->addArgument($options['login_path'])
->addArgument($options['use_forward'])
;

return array($provider, $listenerId, $entryPointId);
}
Expand Down
Expand Up @@ -11,6 +11,7 @@

namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory;

use Symfony\Component\DependencyInjection\DefinitionDecorator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;

Expand All @@ -25,15 +26,15 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider,
{
$provider = 'security.authentication.provider.dao.'.$id;
$container
->register($provider, '%security.authentication.provider.dao.class%')
->setArguments(array(new Reference($userProvider), new Reference('security.account_checker'), $id, new Reference('security.encoder_factory')))
->setPublic(false)
->setDefinition($provider, new DefinitionDecorator('security.authentication.provider.dao'))
->setArgument(0, new Reference($userProvider))
->setArgument(2, $id)
->addTag('security.authentication_provider')
;

// listener
$listenerId = 'security.authentication.listener.basic.'.$id;
$listener = $container->setDefinition($listenerId, clone $container->getDefinition('security.authentication.listener.basic'));
$listener = $container->setDefinition($listenerId, new DefinitionDecorator('security.authentication.listener.basic'));
$listener->setArgument(2, $id);

if (null === $defaultEntryPoint) {
Expand Down
Expand Up @@ -11,6 +11,7 @@

namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory;

use Symfony\Component\DependencyInjection\DefinitionDecorator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;

Expand All @@ -25,15 +26,15 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider,
{
$provider = 'security.authentication.provider.dao.'.$id;
$container
->register($provider, '%security.authentication.provider.dao.class%')
->setArguments(array(new Reference($userProvider), new Reference('security.account_checker'), $id, new Reference('security.encoder_factory')))
->setPublic(false)
->setDefinition($provider, new DefinitionDecorator('security.authentication.provider.dao'))
->setArgument(0, new Reference($userProvider))
->setArgument(2, $id)
->addTag('security.authentication_provider')
;

// listener
$listenerId = 'security.authentication.listener.digest.'.$id;
$listener = $container->setDefinition($listenerId, clone $container->getDefinition('security.authentication.listener.digest'));
$listener = $container->setDefinition($listenerId, new DefinitionDecorator('security.authentication.listener.digest'));
$listener->setArgument(2, $id);

if (null === $defaultEntryPoint) {
Expand Down
Expand Up @@ -2,6 +2,8 @@

namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory;

use Symfony\Component\DependencyInjection\DefinitionDecorator;

use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\DependencyInjection\Parameter;
use Symfony\Component\DependencyInjection\ContainerBuilder;
Expand All @@ -19,11 +21,11 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider,
}

// authentication provider
$authenticationProviderId = 'security.authentication.provider.rememberme.'.$id;
$authProviderId = 'security.authentication.provider.rememberme.'.$id;
$container
->register($authenticationProviderId, '%security.authentication.provider.rememberme.class%')
->setArguments(array(new Reference('security.account_checker'), $config['key'], $id))
->setPublic(false)
->setDefinition($authProviderId, new DefinitionDecorator('security.authentication.provider.rememberme'))
->addArgument(1, $config['key'])
->addArgument(2, $id)
->addTag('security.authentication_provider')
;

Expand All @@ -46,10 +48,9 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider,
;
}

$rememberMeServices = $container->setDefinition($rememberMeServicesId, clone $container->getDefinition($templateId));
$arguments = $rememberMeServices->getArguments();
$arguments[1] = $config['key'];
$arguments[2] = $id;
$rememberMeServices = $container->setDefinition($rememberMeServicesId, new DefinitionDecorator($templateId));
$rememberMeServices->setArgument(1, $config['key']);
$rememberMeServices->setArgument(2, $id);

if (isset($config['token-provider'])) {
// FIXME: make the naming assumption more flexible
Expand All @@ -59,12 +60,22 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider,
}

// remember-me options
foreach ($arguments[3] as $name => $option) {
$options = array(
'name' => 'REMEMBERME',
'lifetime' => 31536000,
'path' => '/',
'domain' => null,
'secure' => false,
'httponly' => true,
'always_remember_me' => false,
'remember_me_parameter' => '_remember_me',
);
foreach ($options as $name => $option) {
if (array_key_exists($name, $config)) {
$arguments[3][$name] = $config[$name];
$options[$name] = $config[$name];
}
}
$rememberMeServices->setArguments($arguments);
$rememberMeServices->setArgument(3, $options);

// attach to remember-me aware listeners
$userProviders = array();
Expand Down Expand Up @@ -92,10 +103,10 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider,

// remember-me listener
$listenerId = 'security.authentication.listener.rememberme.'.$id;
$listener = $container->setDefinition($listenerId, clone $container->getDefinition('security.authentication.listener.rememberme'));
$listener = $container->setDefinition($listenerId, new DefinitionDecorator('security.authentication.listener.rememberme'));
$listener->setArgument(1, new Reference($rememberMeServicesId));

return array($authenticationProviderId, $listenerId, $defaultEntryPoint);
return array($authProviderId, $listenerId, $defaultEntryPoint);
}

public function getPosition()
Expand Down
Expand Up @@ -11,6 +11,8 @@

namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory;

use Symfony\Component\DependencyInjection\DefinitionDecorator;

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;

Expand All @@ -25,18 +27,16 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider,
{
$provider = 'security.authentication.provider.pre_authenticated.'.$id;
$container
->register($provider, '%security.authentication.provider.pre_authenticated.class%')
->setArguments(array(new Reference($userProvider), new Reference('security.account_checker'), $id))
->setPublic(false)
->setDefinition($provider, new DefinitionDecorator('security.authentication.provider.pre_authenticated'))
->setArgument(0, new Reference($userProvider))
->addArgument($id)
->addTag('security.authentication_provider')
;

// listener
$listenerId = 'security.authentication.listener.x509.'.$id;
$listener = $container->setDefinition($listenerId, clone $container->getDefinition('security.authentication.listener.x509'));
$arguments = $listener->getArguments();
$arguments[2] = $id;
$listener->setArguments($arguments);
$listener = $container->setDefinition($listenerId, new DefinitionDecorator('security.authentication.listener.x509'));
$listener->setArgument(2, $id);

return array($provider, $listenerId, $defaultEntryPoint);
}
Expand Down

0 comments on commit e23f39c

Please sign in to comment.