8000 [Security] Correctly initialize the voter property · symfony/symfony@b184401 · GitHub
[go: up one dir, main page]

Skip to content

Commit b184401

Browse files
aschemppnicolas-grekas
authored andcommitted
[Security] Correctly initialize the voter property
1 parent 10d7d43 commit b184401

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

src/Symfony/Bundle/SecurityBundle/DataCollector/SecurityDataCollector.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ public function collect(Request $request, Response $response, ?\Throwable $excep
145145
// collect voters and access decision manager information
146146
if ($this->accessDecisionManager instanceof TraceableAccessDecisionManager) {
147147
$this->data['voter_strategy'] = $this->accessDecisionManager->getStrategy();
148+
$this->data['voters'] = [];
148149

149150
foreach ($this->accessDecisionManager->getVoters() as $voter) {
150151
if ($voter instanceof TraceableVoter) {

src/Symfony/Bundle/SecurityBundle/Tests/DataCollector/SecurityDataCollectorTest.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,36 @@ public function dispatch(object $event, ?string $eventName = null): object
400400
$this->assertSame($dataCollector->getVoterStrategy(), $strategy, 'Wrong value returned by getVoterStrategy');
401401
}
402402

403+
public function testGetVotersIfAccessDecisionManagerHasNoVoters()
404+
{
405+
$strategy = MainConfiguration::STRATEGY_AFFIRMATIVE;
406+
407+
$accessDecisionManager = $this->createMock(TraceableAccessDecisionManager::class);
408+
409+
$accessDecisionManager
410+
->method('getStrategy')
411+
->willReturn($strategy);
412+
413+
$accessDecisionManager
414+
->method('getVoters')
415+
->willReturn([]);
416+
417+
$accessDecisionManager
418+
->method('getDecisionLog')
419+
->willReturn([[
420+
'attributes' => ['view'],
421+
'object' => new \stdClass(),
422+
'result' => true,
423+
'voterDetails' => [],
424+
]]);
425+
426+
$dataCollector = new SecurityDataCollector(null, null, null, $accessDecisionManager, null, null, true);
427+
428+
$dataCollector->collect(new Request(), new Response());
429+
430+
$this->assertEmpty($dataCollector->getVoters());
431+
}
432+
403433
public static function provideRoles(): array
404434
{
405435
return [

0 commit comments

Comments
 (0)
0