SymfonySecurityBundlePass   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 47
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 6
eloc 16
dl 0
loc 47
rs 10
c 0
b 0
f 0
ccs 19
cts 19
cp 1

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A process() 0 10 2
A processAccessControl() 0 14 3
1
<?php
2
3
/*
4
 *
5
 * (c) Yaroslav Honcharuk <[email protected]>
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 */
10
11
namespace Yarhon\RouteGuardBundle\DependencyInjection\Compiler;
12
13
use Symfony\Component\DependencyInjection\ContainerBuilder;
14
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
15
use Yarhon\RouteGuardBundle\Security\TestProvider\SymfonyAccessControlProvider;
16
use Yarhon\RouteGuardBundle\Security\TestResolver\SymfonyAccessControlResolver;
17
use Yarhon\RouteGuardBundle\DependencyInjection\Container\ForeignExtensionAccessor;
18
19
/**
20
 * @author Yaroslav Honcharuk <[email protected]>
21
 */
22
class SymfonySecurityBundlePass implements CompilerPassInterface
23
{
24
    /**
25
     * @var ForeignExtensionAccessor
26
     */
27
    private $extensionAccessor;
28
29
    /**
30
     * @param ForeignExtensionAccessor $extensionAccessor
31
     */
32 23
    public function __construct(ForeignExtensionAccessor $extensionAccessor)
33
    {
34 23
        $this->extensionAccessor = $extensionAccessor;
35 23
    }
36
37
    /**
38
     * {@inheritdoc}
39
     */
40 23
    public function process(ContainerBuilder $container)
41
    {
42 23
        if (!$container->hasExtension('security')) {
43 1
            $container->removeDefinition(SymfonyAccessControlProvider::class);
44 1
            $container->removeDefinition(SymfonyAccessControlResolver::class);
45
46 1
            return;
47
        }
48
49 22
        $this->processAccessControl($container);
50 22
    }
51
52
    /**
53
     * @param ContainerBuilder $container
54
     */
55 22
    private function processAccessControl(ContainerBuilder $container)
56
    {
57 22
        $extension = $container->getExtension('security');
58 22
        $config = $this->extensionAccessor->getProcessedConfig($container, $extension);
59
60 22
        if (!isset($config['access_control']) || 0 === count($config['access_control'])) {
61 12
            $container->removeDefinition(SymfonyAccessControlProvider::class);
62 12
            $container->removeDefinition(SymfonyAccessControlResolver::class);
63
64 12
            return;
65
        }
66
67 10
        $accessControlProvider = $container->getDefinition(SymfonyAccessControlProvider::class);
68 10
        $accessControlProvider->addMethodCall('importRules', [$config['access_control']]);
69 10
    }
70
}
71