Commit a704796c authored by alexpott's avatar alexpott

Issue #2250243 by dawehner, sun: Remove needless ContainerAware dependency...

Issue #2250243 by dawehner, sun: Remove needless ContainerAware dependency from AuthenticationManager.
parent 62edf521
......@@ -856,6 +856,8 @@ services:
- { name: needs_destruction }
authentication:
class: Drupal\Core\Authentication\AuthenticationManager
tags:
- { name: service_collector, tag: authentication_provider, call: addProvider }
authentication_subscriber:
class: Drupal\Core\EventSubscriber\AuthenticationSubscriber
tags:
......
......@@ -57,18 +57,19 @@ class AuthenticationManager implements AuthenticationProviderInterface, Authenti
/**
* Adds a provider to the array of registered providers.
*
* @param string $provider_id
* Identifier of the provider.
* @param \Drupal\Core\Authentication\AuthenticationProviderInterface $provider
* The provider object.
* @param string $id
* Identifier of the provider.
* @param int $priority
* The providers priority.
*/
public function addProvider($provider_id, AuthenticationProviderInterface $provider, $priority = 0) {
$provider_id = substr($provider_id, strlen('authentication.'));
public function addProvider(AuthenticationProviderInterface $provider, $id, $priority = 0) {
// Remove the 'authentication.' prefix from the provider ID.
$id = substr($id, 15);
$this->providers[$provider_id] = $provider;
$this->providerOrders[$priority][$provider_id] = $provider;
$this->providers[$id] = $provider;
$this->providerOrders[$priority][$id] = $provider;
// Force the builders to be re-sorted.
$this->sortedProviders = NULL;
}
......
......@@ -17,7 +17,6 @@
use Drupal\Core\DependencyInjection\Compiler\RegisterKernelListenersPass;
use Drupal\Core\DependencyInjection\Compiler\RegisterAccessChecksPass;
use Drupal\Core\DependencyInjection\Compiler\RegisterServicesForDestructionPass;
use Drupal\Core\DependencyInjection\Compiler\RegisterAuthenticationPass;
use Drupal\Core\Plugin\PluginManagerPass;
use Drupal\Core\Site\Settings;
use Symfony\Component\DependencyInjection\ContainerInterface;
......@@ -69,9 +68,6 @@ public function register(ContainerBuilder $container) {
$container->addCompilerPass(new ListCacheBinsPass());
$container->addCompilerPass(new CacheContextsPass());
// Add the compiler pass that will process tagged authentication services.
$container->addCompilerPass(new RegisterAuthenticationPass());
// Register plugin managers.
$container->addCompilerPass(new PluginManagerPass());
}
......
<?php
/**
* @file
* Contains \Drupal\Core\DependencyInjection\Compiler\RegisterAuthenticationPass.
*/
namespace Drupal\Core\DependencyInjection\Compiler;
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
/**
* Adds services tagged 'authentication_provider'.
*/
class RegisterAuthenticationPass implements CompilerPassInterface {
/**
* Adds authentication providers to the authentication manager.
*
* Check for services tagged with 'authentication_provider' and add them to
* the authentication manager.
*
* @see \Drupal\Core\Authentication\AuthenticationManager
* @see \Drupal\Core\Authentication\AuthenticationProviderInterface
*/
public function process(ContainerBuilder $container) {
if (!$container->hasDefinition('authentication')) {
return;
}
// Get the authentication manager.
$matcher = $container->getDefinition('authentication');
// Iterate all autentication providers and add them to the manager.
foreach ($container->findTaggedServiceIds('authentication_provider') as $id => $attributes) {
$priority = isset($attributes[0]['priority']) ? $attributes[0]['priority'] : 0;
$matcher->addMethodCall('addProvider', array(
$id,
new Reference($id),
$priority,
));
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment