8000 bug #26802 [Security] register custom providers on ExpressionLanguage… · symfony/symfony@5fa9a58 · GitHub
[go: up one dir, main page]

Skip to content

Commit 5fa9a58

Browse files
committed
bug #26802 [Security] register custom providers on ExpressionLanguage directly (dmaicher)
This PR was merged into the 3.4 branch. Discussion ---------- [Security] register custom providers on ExpressionLanguage directly | Q | A | ------------- | --- | Branch? | 3.4 | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | - | License | MIT | Doc PR | - This is a fix on 3.4 related to #26660. See the comment from @stof here: #26660 (comment) - fixes a bug where custom providers would not be registered when retrieving the `security.expression_language` instance without the `ExpressionVoter` being instantiated. - avoids deprecations on 3.4 when using the 4.1 patch in #26660 Commits ------- 3a55a86 [Security] register custom providers on ExpressionLanguage directly
2 parents 603f3ab + 3a55a86 commit 5fa9a58

File tree

2 files changed

+14
-20
lines changed

2 files changed

+14
-20
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddExpressionLanguageProvidersPass.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ public function process(ContainerBuilder $container)
3636
}
3737

3838
// security
39-
if ($container->has('security.access.expression_voter')) {
40-
$definition = $container->findDefinition('security.access.expression_voter');
39+
if ($container->has('security.expression_language')) {
40+
$definition = $container->findDefinition('security.expression_language');
4141
foreach ($container->findTaggedServiceIds('security.expression_language_provider', true) as $id => $attributes) {
42-
$definition->addMethodCall('addExpressionLanguageProvider', array(new Reference($id)));
42+ 8000
$definition->addMethodCall('registerProvider', array(new Reference($id)));
4343
}
4444
}
4545
}

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/AddExpressionLanguageProvidersPassTest.php

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public function testProcessForRouter()
2424
$container = new ContainerBuilder();
2525
$container->addCompilerPass(new AddExpressionLanguageProvidersPass());
2626

27-
$definition = new Definition('Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler\TestProvider');
27+
$definition = new Definition('\stdClass');
2828
$definition->addTag('routing.expression_language_provider');
2929
$container->setDefinition('some_routing_provider', $definition->setPublic(true));
3030

@@ -43,7 +43,7 @@ public function testProcessForRouterAlias()
4343
$container = new ContainerBuilder();
4444
$container->addCompilerPass(new AddExpressionLanguageProvidersPass());
4545

46-
$definition = new Definition('Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler\TestProvider');
46+
$definition = new Definition('\stdClass');
4747
$definition->addTag('routing.expression_language_provider');
4848
$container->setDefinition('some_routing_provider', $definition->setPublic(true));
4949

@@ -63,17 +63,16 @@ public function testProcessForSecurity()
6363
$container = new ContainerBuilder();
6464
$container->addCompilerPass(new AddExpressionLanguageProvidersPass());
6565

66-
$definition = new Definition('Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler\TestProvider');
66+
$definition = new Definition('\stdClass');
6767
$definition->addTag('security.expression_language_provider');
6868
$container->setDefinition('some_security_provider', $definition->setPublic(true));
6969

70-
$container->register('security.access.expression_voter', '\stdClass')->setPublic(true);
70+
$container->register('security.expression_language', '\stdClass')->setPublic(true);
7171
$container->compile();
7272

73-
$router = $container->getDefinition('security.access.expression_voter');
74-
$calls = $router->getMethodCalls();
73+
$calls = $container->getDefinition('security.expression_language')->getMethodCalls();
7574
$this->assertCount(1, $calls);
76-
$this->assertEquals('addExpressionLanguageProvider', $calls[0][0]);
75+
$this->assertEquals('registerProvider', $calls[0][0]);
7776
$this->assertEquals(new Reference('some_security_provider'), $calls[0][1][0]);
7877
}
7978

@@ -82,22 +81,17 @@ public function testProcessForSecurityAlias()
8281
$container = new ContainerBuilder();
8382
$container->addCompilerPass(new AddExpressionLanguageProvidersPass());
8483

85-
$definition = new Definition('Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler\TestProvider');
84+
$definition = new Definition('\stdClass');
8685
$definition->addTag('security.expression_language_provider');
8786
$container->setDefinition('some_security_provider', $definition->setPublic(true));
8887

89-
$container->register('my_security.access.expression_voter', '\stdClass')->setPublic(true);
90-
$container->setAlias('security.access.expression_voter', 'my_security.access.expression_voter');
88+
$container->register('my_security.expression_language', '\stdClass')->setPublic(true);
89+
$container->setAlias('security.expression_language', 'my_security.expression_language');
9190
$container->compile();
9291

93-
$router = $container->getDefinition('my_security.access.expression_voter');
94-
$calls = $router->getMethodCalls();
92+
$calls = $container->getDefinition('my_security.expression_language')->getMethodCalls();
9593
$this->assertCount(1, $calls);
96-
$this->assertEquals('addExpressionLanguageProvider', $calls[0][0]);
94+
$this->assertEquals('registerProvider', $calls[0][0]);
9795
$this->assertEquals(new Reference('some_security_provider'), $calls[0][1][0]);
9896
}
9997
}
100-
101-
c 4186 lass TestProvider
102-
{
103-
}

0 commit comments

Comments
 (0)
0