Webiny\Component\Security\Security::getFirewallUserProviders PHP Method

getFirewallUserProviders() private method

NOTE: this function also checks for chain providers.
private getFirewallUserProviders ( string $firewallKey ) : array
$firewallKey string Firewall name.
return array Array of user provider instances for the given firewall.
    private function getFirewallUserProviders($firewallKey)
    {
        $userProviders = [];
        $firewallProviders = $this->getFirewallConfig($firewallKey)->get('UserProviders', false);
        if (!$firewallProviders || count($firewallProviders) < 1) {
            throw new SecurityException('User providers for firewall "' . $firewallKey . '" are not defined.');
        }
        $providers = $this->getConfig()->get('UserProviders', []);
        foreach ($firewallProviders as $pk) {
            // get global config
            $gConfig = $providers->get($pk, false);
            $params = null;
            // get firewall driver and params
            if (isset($gConfig->Driver)) {
                $driver = $gConfig->Driver;
                if (isset(self::$userProviders[$driver])) {
                    // short-hand driver name in the global config
                    $driver = self::$userProviders[$driver];
                }
                $params = $gConfig->get('Params', null, true);
            } else {
                if (isset(self::$userProviders[$pk])) {
                    $driver = self::$userProviders[$pk];
                    if ($gConfig) {
                        $params = $gConfig->get('Params', null, true);
                    }
                } else {
                    throw new SecurityException('User providers "' . $pk . '" is missing a Driver.');
                }
            }
            // In case of memory user provider, we don't have the parameters, but we have the user accounts
            // these need to be passed to the constructor.
            // Not the best way to do it, but keeps the yaml config simpler
            if ($driver == self::$userProviders['Memory'] && $params == null) {
                $params = $gConfig->toArray();
            }
            try {
                $userProviders[$pk] = $this->factory($driver, '\\Webiny\\Component\\Security\\User\\UserProviderInterface', is_null($params) ? null : [$params]);
            } catch (\Exception $e) {
                throw new SecurityException($e->getMessage());
            }
        }
        if (count($userProviders) < 1) {
            throw new SecurityException('Unable to detect the user providers for "' . $firewallKey . '" firewall.');
        }
        return $userProviders;
    }