/**
  * {@inheritdoc}
  */
 public function createAuthorizationFromRequest(ServerRequestInterface $request)
 {
     $parameters = $this->authorization_request_loader->loadParametersFromRequest($request);
     $client = $parameters['client'];
     $this->getParameterCheckerManager()->checkParameters($client, $parameters);
     $types = $this->getResponseTypes($parameters);
     $this->checkResponseTypeAllowedForTheClient($client, $parameters);
     $response_mode = $this->getResponseMode($parameters, $types);
     $redirect_uri = $parameters['redirect_uri'];
     $scope = array_key_exists('scope', $parameters) ? $parameters['scope'] : [];
     return new Authorization($parameters, $client, $types, $response_mode, $redirect_uri, $scope);
 }
 /**
  * @param \OAuth2\Endpoint\Authorization\AuthorizationRequestLoaderInterface $authorization_request_loader
  */
 public function setAuthorizationRequestLoader(AuthorizationRequestLoaderInterface $authorization_request_loader)
 {
     $this->set('request_parameter_supported', $authorization_request_loader->isRequestObjectSupportEnabled());
     if (true === $authorization_request_loader->isRequestObjectSupportEnabled()) {
         $this->set('request_uri_parameter_supported', $authorization_request_loader->isRequestObjectReferenceSupportEnabled());
         if (true === $authorization_request_loader->isRequestObjectReferenceSupportEnabled()) {
             $this->set('require_request_uri_registration', $authorization_request_loader->isRequestUriRegistrationRequired());
         }
         $methods = ['getSupportedSignatureAlgorithms' => 'request_object_signing_alg_values_supported', 'getSupportedKeyEncryptionAlgorithms' => 'request_object_encryption_alg_values_supported', 'getSupportedContentEncryptionAlgorithms' => 'request_object_encryption_enc_values_supported'];
         foreach ($methods as $method => $key) {
             $value = $authorization_request_loader->{$method}();
             if (!empty($value)) {
                 $this->set($key, $value);
             }
         }
     }
 }