Skip to content
Snippets Groups Projects
Select Git revision
  • e839a9726a0f9abb4e6776b56eabdce546a961ce
  • 11.x default protected
  • 11.2.x protected
  • 10.6.x protected
  • 10.5.x protected
  • 11.1.x protected
  • 10.4.x protected
  • 11.0.x protected
  • 10.3.x protected
  • 7.x protected
  • 10.2.x protected
  • 10.1.x protected
  • 9.5.x protected
  • 10.0.x protected
  • 9.4.x protected
  • 9.3.x protected
  • 9.2.x protected
  • 9.1.x protected
  • 8.9.x protected
  • 9.0.x protected
  • 8.8.x protected
  • 10.5.1 protected
  • 11.2.2 protected
  • 11.2.1 protected
  • 11.2.0 protected
  • 10.5.0 protected
  • 11.2.0-rc2 protected
  • 10.5.0-rc1 protected
  • 11.2.0-rc1 protected
  • 10.4.8 protected
  • 11.1.8 protected
  • 10.5.0-beta1 protected
  • 11.2.0-beta1 protected
  • 11.2.0-alpha1 protected
  • 10.4.7 protected
  • 11.1.7 protected
  • 10.4.6 protected
  • 11.1.6 protected
  • 10.3.14 protected
  • 10.4.5 protected
  • 11.0.13 protected
41 results

AuthenticationCollector.php

Blame
  • Alex Pott's avatar
    Issue #2665992 by alexpott, klausi, heykarthikwithu, xjm, tstoeckler: @file is...
    Alex Pott authored
    Issue #2665992 by alexpott, klausi, heykarthikwithu, xjm, tstoeckler: @file is not required for classes, interfaces and traits
    bfde6d34
    History
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    AuthenticationCollector.php 1.98 KiB
    <?php
    
    namespace Drupal\Core\Authentication;
    
    /**
     * A collector class for authentication providers.
     */
    class AuthenticationCollector implements AuthenticationCollectorInterface {
    
      /**
       * Array of all registered authentication providers, keyed by ID.
       *
       * @var \Drupal\Core\Authentication\AuthenticationProviderInterface[]
       */
      protected $providers;
    
      /**
       * Array of all providers and their priority.
       *
       * @var array
       */
      protected $providerOrders = [];
    
      /**
       * Sorted list of registered providers.
       *
       * @var \Drupal\Core\Authentication\AuthenticationProviderInterface[]
       */
      protected $sortedProviders;
    
      /**
       * List of providers which are allowed on routes with no _auth option.
       *
       * @var string[]
       */
      protected $globalProviders;
    
      /**
       * {@inheritdoc}
       */
      public function addProvider(AuthenticationProviderInterface $provider, $provider_id, $priority = 0, $global = FALSE) {
        $this->providers[$provider_id] = $provider;
        $this->providerOrders[$priority][$provider_id] = $provider;
        // Force the providers to be re-sorted.
        $this->sortedProviders = NULL;
    
        if ($global) {
          $this->globalProviders[$provider_id] = TRUE;
        }
      }
    
      /**
       * {@inheritdoc}
       */
      public function isGlobal($provider_id) {
        return isset($this->globalProviders[$provider_id]);
      }
    
      /**
       * {@inheritdoc}
       */
      public function getProvider($provider_id) {
        return isset($this->providers[$provider_id]) ? $this->providers[$provider_id] : NULL;
      }
    
      /**
       * {@inheritdoc}
       */
      public function getSortedProviders() {
        if (!isset($this->sortedProviders)) {
          // Sort the providers according to priority.
          krsort($this->providerOrders);
    
          // Merge nested providers from $this->providers into $this->sortedProviders.
          $this->sortedProviders = [];
          foreach ($this->providerOrders as $providers) {
            $this->sortedProviders = array_merge($this->sortedProviders, $providers);
          }
        }
    
        return $this->sortedProviders;
      }
    
    }