-
-
Notifications
You must be signed in to change notification settings - Fork 9.4k
/
FormLoginFactory.php
57 lines (49 loc) · 2.29 KB
/
FormLoginFactory.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
namespace Symfony\Bundle\FrameworkBundle\DependencyInjection\Security\Factory;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;
class FormLoginFactory implements SecurityFactoryInterface
{
public function create(ContainerBuilder $container, $id, $config, $userProvider, $providerIds, $defaultEntryPoint)
{
$provider = 'security.authentication.provider.dao.'.$id;
$container
->register($provider, '%security.authentication.provider.dao.class%')
->setArguments(array(new Reference($userProvider), new Reference('security.account_checker'), new Reference('security.encoder.'.$providerIds[$userProvider])));
;
// listener
$listenerId = 'security.authentication.listener.form.'.$id;
$listener = $container->setDefinition($listenerId, clone $container->getDefinition('security.authentication.listener.form'));
$arguments = $listener->getArguments();
$arguments[1] = new Reference($provider);
$listener->setArguments($arguments);
$options = array(
'check_path' => '/login_check',
'login_path' => '/login',
'use_forward' => false,
'always_use_default_target_path' => false,
'default_target_path' => '/',
'target_path_parameter' => '_target_path',
'use_referer' => false,
'failure_path' => null,
'failure_forward' => false,
);
foreach (array_keys($options) as $key) {
if (isset($config[$key])) {
$options[$key] = $config[$key];
}
}
$container->setParameter('security.authentication.form.options', $options);
$container->setParameter('security.authentication.form.login_path', $options['login_path']);
$container->setParameter('security.authentication.form.use_forward', $options['use_forward']);
return array($provider, $listenerId, 'security.authentication.form_entry_point');
}
public function getPosition()
{
return 'form';
}
public function getKey()
{
return 'form-login';
}
}