Skip to content

Commit ffbd82c

Browse files
committed
[SecurityBundle] Do not replace authenticators service by their traceable version
1 parent 909cb59 commit ffbd82c

File tree

2 files changed

+27
-4
lines changed

2 files changed

+27
-4
lines changed

src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -643,11 +643,13 @@ private function createAuthenticationListeners(ContainerBuilder $container, stri
643643
}
644644

645645
if ($container->hasDefinition('debug.security.firewall')) {
646-
foreach ($authenticationProviders as $authenticatorId) {
647-
$container->register('debug.'.$authenticatorId, TraceableAuthenticator::class)
648-
->setDecoratedService($authenticatorId)
649-
->setArguments([new Reference('debug.'.$authenticatorId.'.inner')])
646+
foreach ($authenticationProviders as &$authenticatorId) {
647+
$traceableId = 'debug.'.$authenticatorId;
648+
$container
649+
->register($traceableId, TraceableAuthenticator::class)
650+
->setArguments([new Reference($authenticatorId)])
650651
;
652+
$authenticatorId = $traceableId;
651653
}
652654
}
653655

src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/SecurityExtensionTest.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@
2020
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
2121
use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException;
2222
use Symfony\Component\DependencyInjection\Argument\IteratorArgument;
23+
use Symfony\Component\DependencyInjection\Compiler\DecoratorServicePass;
2324
use Symfony\Component\DependencyInjection\Compiler\ResolveChildDefinitionsPass;
25+
use Symfony\Component\DependencyInjection\Compiler\ResolveReferencesToAliasesPass;
2426
use Symfony\Component\DependencyInjection\ContainerBuilder;
2527
use Symfony\Component\DependencyInjection\Reference;
2628
use Symfony\Component\ExpressionLanguage\Expression;
@@ -900,6 +902,25 @@ public function testCustomHasherWithMigrateFrom()
900902
]);
901903
}
902904

905+
public function testAuthenticatorsStillExistAfterBeingDecorated()
906+
{
907+
$container = $this->getRawContainer();
908+
$container->setParameter('kernel.debug', true);
909+
$container->getCompilerPassConfig()->setOptimizationPasses([
910+
new ResolveChildDefinitionsPass(),
911+
new DecoratorServicePass(),
912+
new ResolveReferencesToAliasesPass(),
913+
]);
914+
915+
$container->register(TestAuthenticator::class);
916+
$container->loadFromExtension('security', [
917+
'firewalls' => ['main' => ['custom_authenticator' => TestAuthenticator::class]],
918+
]);
919+
$container->compile();
920+
921+
$this->assertTrue($container->hasDefinition(TestAuthenticator::class));
922+
}
923+
903924
protected function getRawContainer()
904925
{
905926
$container = new ContainerBuilder();

0 commit comments

Comments
 (0)