@@ -26,15 +26,33 @@ class FormLoginLdapFactory extends FormLoginFactory
26
26
{
27
27
protected function createAuthProvider (ContainerBuilder $ container , $ id , $ config , $ userProviderId )
28
28
{
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
+ }
38
56
39
57
return $ provider ;
40
58
}
@@ -47,6 +65,7 @@ public function addConfiguration(NodeDefinition $node)
47
65
->children ()
48
66
->scalarNode ('service ' )->defaultValue ('ldap ' )->end ()
49
67
->scalarNode ('dn_string ' )->defaultValue ('{username} ' )->end ()
68
+ ->scalarNode ('query_string ' )->end ()
50
69
->end ()
51
70
;
52
71
}
0 commit comments