<?php/* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */namespace Symfony\Bundle\SecurityBundle;use Symfony\Bundle\SecurityBundle\DependencyInjection\Compiler\AddExpressionLanguageProvidersPass;use Symfony\Bundle\SecurityBundle\DependencyInjection\Compiler\AddSecurityVotersPass;use Symfony\Bundle\SecurityBundle\DependencyInjection\Compiler\AddSessionDomainConstraintPass;use Symfony\Bundle\SecurityBundle\DependencyInjection\Compiler\CleanRememberMeVerifierPass;use Symfony\Bundle\SecurityBundle\DependencyInjection\Compiler\RegisterCsrfFeaturesPass;use Symfony\Bundle\SecurityBundle\DependencyInjection\Compiler\RegisterEntryPointPass;use Symfony\Bundle\SecurityBundle\DependencyInjection\Compiler\RegisterGlobalSecurityEventListenersPass;use Symfony\Bundle\SecurityBundle\DependencyInjection\Compiler\RegisterLdapLocatorPass;use Symfony\Bundle\SecurityBundle\DependencyInjection\Compiler\RegisterTokenUsageTrackingPass;use Symfony\Bundle\SecurityBundle\DependencyInjection\Compiler\ReplaceDecoratedRememberMeHandlerPass;use Symfony\Bundle\SecurityBundle\DependencyInjection\Compiler\SortFirewallListenersPass;use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\AnonymousFactory;use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\CustomAuthenticatorFactory;use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\FormLoginFactory;use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\FormLoginLdapFactory;use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\GuardAuthenticationFactory;use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\HttpBasicFactory;use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\HttpBasicLdapFactory;use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\JsonLoginFactory;use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\JsonLoginLdapFactory;use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\LoginLinkFactory;use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\LoginThrottlingFactory;use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\RememberMeFactory;use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\RemoteUserFactory;use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\X509Factory;use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\UserProvider\InMemoryFactory;use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\UserProvider\LdapFactory;use Symfony\Bundle\SecurityBundle\DependencyInjection\SecurityExtension;use Symfony\Component\DependencyInjection\Compiler\PassConfig;use Symfony\Component\DependencyInjection\ContainerBuilder;use Symfony\Component\EventDispatcher\DependencyInjection\AddEventAliasesPass;use Symfony\Component\HttpKernel\Bundle\Bundle;use Symfony\Component\Security\Core\AuthenticationEvents;use Symfony\Component\Security\Http\SecurityEvents;/** * Bundle. * * @author Fabien Potencier <fabien@symfony.com> */class SecurityBundle extends Bundle{ public function build(ContainerBuilder $container) { parent::build($container); /** @var SecurityExtension $extension */ $extension = $container->getExtension('security'); $extension->addAuthenticatorFactory(new FormLoginFactory()); $extension->addAuthenticatorFactory(new FormLoginLdapFactory()); $extension->addAuthenticatorFactory(new JsonLoginFactory()); $extension->addAuthenticatorFactory(new JsonLoginLdapFactory()); $extension->addAuthenticatorFactory(new HttpBasicFactory()); $extension->addAuthenticatorFactory(new HttpBasicLdapFactory()); $extension->addAuthenticatorFactory(new RememberMeFactory()); $extension->addAuthenticatorFactory(new X509Factory()); $extension->addAuthenticatorFactory(new RemoteUserFactory()); $extension->addAuthenticatorFactory(new GuardAuthenticationFactory()); $extension->addAuthenticatorFactory(new AnonymousFactory()); $extension->addAuthenticatorFactory(new CustomAuthenticatorFactory()); $extension->addAuthenticatorFactory(new LoginThrottlingFactory()); $extension->addAuthenticatorFactory(new LoginLinkFactory()); $extension->addUserProviderFactory(new InMemoryFactory()); $extension->addUserProviderFactory(new LdapFactory()); $container->addCompilerPass(new AddExpressionLanguageProvidersPass()); $container->addCompilerPass(new AddSecurityVotersPass()); $container->addCompilerPass(new AddSessionDomainConstraintPass(), PassConfig::TYPE_BEFORE_REMOVING); $container->addCompilerPass(new CleanRememberMeVerifierPass()); $container->addCompilerPass(new RegisterCsrfFeaturesPass()); $container->addCompilerPass(new RegisterTokenUsageTrackingPass(), PassConfig::TYPE_BEFORE_OPTIMIZATION, 200); $container->addCompilerPass(new RegisterLdapLocatorPass()); $container->addCompilerPass(new RegisterEntryPointPass()); // must be registered after RegisterListenersPass (in the FrameworkBundle) $container->addCompilerPass(new RegisterGlobalSecurityEventListenersPass(), PassConfig::TYPE_BEFORE_REMOVING, -200); // execute after ResolveChildDefinitionsPass optimization pass, to ensure class names are set $container->addCompilerPass(new SortFirewallListenersPass(), PassConfig::TYPE_BEFORE_REMOVING); $container->addCompilerPass(new ReplaceDecoratedRememberMeHandlerPass(), PassConfig::TYPE_OPTIMIZE); $container->addCompilerPass(new AddEventAliasesPass(array_merge( AuthenticationEvents::ALIASES, SecurityEvents::ALIASES ))); }}