vendor/symfony/security-bundle/DependencyInjection/Security/Factory/FormLoginLdapFactory.php line 43

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Symfony package.
  4.  *
  5.  * (c) Fabien Potencier <[email protected]>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory;
  11. use Symfony\Component\Config\Definition\Builder\NodeDefinition;
  12. use Symfony\Component\DependencyInjection\ChildDefinition;
  13. use Symfony\Component\DependencyInjection\ContainerBuilder;
  14. use Symfony\Component\DependencyInjection\Reference;
  15. /**
  16.  * FormLoginLdapFactory creates services for form login ldap authentication.
  17.  *
  18.  * @author GrĂ©goire Pineau <[email protected]>
  19.  * @author Charles Sarrazin <[email protected]>
  20.  */
  21. class FormLoginLdapFactory extends FormLoginFactory
  22. {
  23.     protected function createAuthProvider(ContainerBuilder $container$id$config$userProviderId)
  24.     {
  25.         $provider 'security.authentication.provider.ldap_bind.'.$id;
  26.         $definition $container
  27.             ->setDefinition($provider, new ChildDefinition('security.authentication.provider.ldap_bind'))
  28.             ->replaceArgument(0, new Reference($userProviderId))
  29.             ->replaceArgument(1, new Reference('security.user_checker.'.$id))
  30.             ->replaceArgument(2$id)
  31.             ->replaceArgument(3, new Reference($config['service']))
  32.             ->replaceArgument(4$config['dn_string'])
  33.             ->replaceArgument(6$config['search_dn'])
  34.             ->replaceArgument(7$config['search_password'])
  35.         ;
  36.         if (!empty($config['query_string'])) {
  37.             if ('' === $config['search_dn'] || '' === $config['search_password']) {
  38.                 @trigger_error('Using the "query_string" config without using a "search_dn" and a "search_password" is deprecated since Symfony 4.4 and will throw an exception in Symfony 5.0.'E_USER_DEPRECATED);
  39.             }
  40.             $definition->addMethodCall('setQueryString', [$config['query_string']]);
  41.         }
  42.         return $provider;
  43.     }
  44.     public function addConfiguration(NodeDefinition $node)
  45.     {
  46.         parent::addConfiguration($node);
  47.         $node
  48.             ->children()
  49.                 ->scalarNode('service')->defaultValue('ldap')->end()
  50.                 ->scalarNode('dn_string')->defaultValue('{username}')->end()
  51.                 ->scalarNode('query_string')->end()
  52.                 ->scalarNode('search_dn')->defaultValue('')->end()
  53.                 ->scalarNode('search_password')->defaultValue('')->end()
  54.             ->end()
  55.         ;
  56.     }
  57.     public function getKey()
  58.     {
  59.         return 'form-login-ldap';
  60.     }
  61. }