Passed
Push — master ( 989659...d90b52 )
by Damien
04:23
created

CustomConfigurationCompilerPass::process()   A

Complexity

Conditions 6
Paths 10

Size

Total Lines 33
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 6
eloc 19
c 1
b 0
f 0
nc 10
nop 1
dl 0
loc 33
rs 9.0111
1
<?php
2
3
namespace DH\AuditorBundle\DependencyInjection\Compiler;
4
5
use DH\Auditor\Provider\Doctrine\DoctrineProvider;
6
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
7
use Symfony\Component\DependencyInjection\ContainerBuilder;
8
use Symfony\Component\DependencyInjection\Reference;
9
10
class CustomConfigurationCompilerPass implements CompilerPassInterface
11
{
12
    public function process(ContainerBuilder $container): void
13
    {
14
        if (!$container->hasDefinition(DoctrineProvider::class)) {
15
            return;
16
        }
17
18
        $doctrineProviderConfigurationKey = 'dh_auditor.provider.doctrine.configuration';
19
        if (!$container->hasParameter($doctrineProviderConfigurationKey)) {
20
            return;
21
        }
22
23
        $providerDefinition = $container->getDefinition(DoctrineProvider::class);
24
        $config = $container->getParameter($doctrineProviderConfigurationKey);
25
26
        // User provider service
27
        $serviceId = $config['user_provider'];
28
        if (null !== $serviceId) {
29
            $reference = new Reference($serviceId);
30
            $providerDefinition->addMethodCall('setUserProvider', [$reference]);
31
        }
32
33
        // Role checker service
34
        $serviceId = $config['role_checker'];
35
        if (null !== $serviceId) {
36
            $reference = new Reference($serviceId);
37
            $providerDefinition->addMethodCall('setRoleChecker', [$reference]);
38
        }
39
40
        // Security service
41
        $serviceId = $config['security_provider'];
42
        if (null !== $serviceId) {
43
            $reference = new Reference($serviceId);
44
            $providerDefinition->addMethodCall('setSecurityProvider', [$reference]);
45
        }
46
    }
47
}
48