IPFactory::create()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 14
c 0
b 0
f 0
rs 9.7998
cc 1
nc 1
nop 5
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
}