Skip to content

Commit

Permalink
Merge pull request #24 from SvetlinStaev/master
Browse files Browse the repository at this point in the history
Added support for Symfony 4.0 where DefinitionDecorator class is removed
  • Loading branch information
jmikola committed Mar 15, 2018
2 parents 1776dc7 + c76e829 commit 75761f2
Showing 1 changed file with 18 additions and 2 deletions.
20 changes: 18 additions & 2 deletions DependencyInjection/Security/AutoLoginFactory.php
Expand Up @@ -4,6 +4,7 @@

use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\SecurityFactoryInterface;
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
use Symfony\Component\DependencyInjection\ChildDefinition;
use Symfony\Component\DependencyInjection\DefinitionDecorator;
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\DependencyInjection\ContainerBuilder;
Expand All @@ -17,7 +18,7 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider,
{
$providerId = 'jmikola_auto_login.security.authentication.provider.'.$id;
$provider = $container
->setDefinition($providerId, new DefinitionDecorator('jmikola_auto_login.security.authentication.provider'))
->setDefinition($providerId, $this->createDefinition('jmikola_auto_login.security.authentication.provider'))
->replaceArgument(0, new Reference($userProvider))
->replaceArgument(2, $id)
;
Expand All @@ -33,7 +34,7 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider,

$listenerId = 'jmikola_auto_login.security.authentication.listener.'.$id;
$container
->setDefinition($listenerId, new DefinitionDecorator('jmikola_auto_login.security.authentication.listener'))
->setDefinition($listenerId, $this->createDefinition('jmikola_auto_login.security.authentication.listener'))
->replaceArgument(0, $tokenStorageReference)
->replaceArgument(2, $id)
->replaceArgument(3, $config['token_param'])
Expand All @@ -45,6 +46,21 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider,
return array($providerId, $listenerId, $defaultEntryPoint);
}

/**
* @param string $id
*
* @return ChildDefinition|DefinitionDecorator
*/
private function createDefinition($id)
{
// Support for Symfony 4.0+
if (\class_exists('Symfony\Component\DependencyInjection\ChildDefinition')) {
return new ChildDefinition($id);
}

return new DefinitionDecorator($id);
}

/**
* @see Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\SecurityFactoryInterface::getKey()
*/
Expand Down

0 comments on commit 75761f2

Please sign in to comment.