/** * Get the Authorisation\AuthorisationInterface class to handle the request. * * @param \Silex\Application $app * * @throws InvalidAuthorisationRequestException */ protected function setProviderHandler(Application $app) { $providerName = $this->getProviderName(); if ($providerName === null) { $app['logger.system']->debug('[ClientLogin][Provider]: Request was missing a provider in the GET.', ['event' => 'extensions']); throw new Exception\InvalidAuthorisationRequestException('Authentication configuration error. Unable to proceed!'); } $providerConfig = $this->config->getProvider($providerName); if ($providerConfig === null) { $app['logger.system']->debug('[ClientLogin][Provider]: Request provider did not match any configured providers.', ['event' => 'extensions']); throw new Exception\InvalidAuthorisationRequestException('Authentication configuration error. Unable to proceed!'); } if ($providerConfig['enabled'] !== true && $providerName !== 'Generic') { $app['logger.system']->debug('[ClientLogin][Provider]: Request provider was disabled.', ['event' => 'extensions']); throw new Exception\InvalidAuthorisationRequestException('Authentication configuration error. Unable to proceed!'); } if ($providerName === 'Local' && !isset($app['boltforms'])) { throw new \RuntimeException('Local handler requires BoltForms (v2.5.0 or later preferred).'); } $handlerKey = $this->getHandlerKey($providerName); $app['clientlogin.handler'] = $app->share(function ($app) use($app, $handlerKey) { return $app[$handlerKey]([]); }); $this->provider = $app['clientlogin.handler']; }
public function testGetProvider() { $providers = array('Local', 'Facebook', 'Google', 'Github', 'Generic'); $config = new Config(array(), 'http://example.com'); foreach ($providers as $provider) { $provider = $config->getProvider($provider); $this->assertArrayHasKey('enabled', $provider); $this->assertArrayHasKey('clientId', $provider); $this->assertArrayHasKey('clientSecret', $provider); $this->assertArrayHasKey('scopes', $provider); $this->assertFalse($provider['enabled']); } }