IPFactory   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Importance

Changes 0
Metric Value
dl 0
loc 35
c 0
b 0
f 0
wmc 4
lcom 0
cbo 0
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A create() 0 14 1
A getPosition() 0 4 1
A getKey() 0 4 1
A addConfiguration() 0 7 1
1
<?php
2
3
namespace Kaliop\IdentityManagementBundle\Security\Factory;
4
5
use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\SecurityFactoryInterface;
6
use Symfony\Component\DependencyInjection\ContainerBuilder;
7
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
8
use Symfony\Component\DependencyInjection\DefinitionDecorator;
9
use Symfony\Component\DependencyInjection\Reference;
10
11
/**
12
 * Ties together the auth listener and provider for IP-based access
13
 *
14
 * @see http://symfony.com/doc/2.3/cookbook/security/custom_authentication_provider.html
15
 */
16
class IPFactory implements SecurityFactoryInterface
17
{
18
    public function create(ContainerBuilder $container, $id, $config, $userProvider, $defaultEntryPoint)
19
    {
20
        $providerId = 'security.authentication.provider.ip.'.$id;
21
        $container
22
            ->setDefinition($providerId, new DefinitionDecorator('kaliop_identity.security.authentication.provider.ip'))
23
            ->replaceArgument(0, new Reference($config['mapper']))
24
            ->replaceArgument(1, new Reference($userProvider))
25
        ;
26
27
        $listenerId = 'security.authentication.listener.ip.'.$id;
28
        $container->setDefinition($listenerId, new DefinitionDecorator('kaliop_identity.security.authentication.listener.ip'));
29
30
        return array($providerId, $listenerId, $defaultEntryPoint);
31
    }
32
33
    public function getPosition()
34
    {
35
        return 'pre_auth';
36
    }
37
38
    public function getKey()
39
    {
40
        return 'ip_login';
41
    }
42
43
    public function addConfiguration(NodeDefinition $node)
44
    {
45
        $node
46
            ->children()
47
                ->scalarNode('mapper')
48
            ->end();
49
    }
50
}