Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d7b1939

Browse files
committed
added LdapQueryAuthenticationProvider
1 parent 140e847 commit d7b1939

File tree

2 files changed

+38
-9
lines changed

2 files changed

+38
-9
lines changed

src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/FormLoginLdapFactory.php

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,33 @@ class FormLoginLdapFactory extends FormLoginFactory
2626
{
2727
protected function createAuthProvider(ContainerBuilder $container, $id, $config, $userProviderId)
2828
{
29-
$provider = 'security.authentication.provider.ldap_bind.'.$id;
30-
$container
31-
->setDefinition($provider, new ChildDefinition('security.authentication.provider.ldap_bind'))
32-
->replaceArgument(0, new Reference($userProviderId))
33-
->replaceArgument(1, new Reference('security.user_checker.'.$id))
34-
->replaceArgument(2, $id)
35-
->replaceArgument(3, new Reference($config['service']))
36-
->replaceArgument(4, $config['dn_string'])
37-
;
29+
$method = empty($config['query_string']) ? 'bind' : 'query';
30+
31+
$provider = 'security.authentication.provider.ldap_'.$method.'.'.$id;
32+
33+
switch($method) {
34+
case 'query':
35+
$container
36+
->setDefinition($provider, new ChildDefinition('security.authentication.provider.ldap_query'))
37+
->replaceArgument(0, new Reference($userProviderId))
38+
->replaceArgument(1, new Reference('security.user_checker.'.$id))
39+
->replaceArgument(2, $id)
40+
->replaceArgument(3, new Reference($config['service']))
41+
->replaceArgument(4, $config['dn_string'])
42+
->replaceArgument(5, $config['query_string'])
43+
;
44+
break;
45+
default:
46+
$container
47+
->setDefinition($provider, new ChildDefinition('security.authentication.provider.ldap_bind'))
48+
->replaceArgument(0, new Reference($userProviderId))
49+
->replaceArgument(1, new Reference('security.user_checker.'.$id))
50+
->replaceArgument(2, $id)
51+
->replaceArgument(3, new Reference($config['service']))
52+
->replaceArgument(4, $config['dn_string'])
53+
;
54+
break;
55+
}
3856

3957
return $provider;
4058
}
@@ -47,6 +65,7 @@ public function addConfiguration(NodeDefinition $node)
4765
->children()
4866
->scalarNode('service')->defaultValue('ldap')->end()
4967
->scalarNode('dn_string')->defaultValue('{username}')->end()
68+
->scalarNode('query_string')->end()
5069
->end()
5170
;
5271
}

src/Symfony/Bundle/SecurityBundle/Resources/config/security_listeners.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,16 @@
201201
<argument>%security.authentication.hide_user_not_found%</argument>
202202
</service>
203203

204+
<service id="security.authentication.provider.ldap_query" class="Symfony\Component\Security\Core\Authentication\Provider\LdapQueryAuthenticationProvider" public="false" abstract="true">
205+
<argument /> <!-- User Provider -->
206+
<argument /> <!-- UserChecker -->
207+
<argument /> <!-- Provider-shared Key -->
208+
<argument /> <!-- LDAP -->
209+
<argument /> <!-- Base DN -->
210+
<argument /> <!-- Query DN -->
211+
<argument>%security.authentication.hide_user_not_found%</argument>
212+
</service>
213+
204214
<service id="security.authentication.provider.simple" class="Symfony\Component\Security\Core\Authentication\Provider\SimpleAuthenticationProvider" abstract="true" public="false">
205215
<argument /> <!-- Simple Authenticator -->
206216
<argument /> <!-- User Provider -->

0 commit comments

Comments
 (0)