示例#1
0
 /**
  * @return tubepress_api_url_UrlInterface
  */
 private function _startAdminUrl($pageSlug, tubepress_spi_http_oauth2_Oauth2ProviderInterface $provider)
 {
     $asString = $this->_wpFunctions->admin_url('admin.php');
     $toReturn = $this->_urlFactory->fromString($asString);
     $providerName = $provider->getName();
     $toReturn->getQuery()->set('page', $pageSlug)->set('provider', $providerName)->set('csrf_token', $this->getCsrfSecret());
     return $toReturn;
 }
 /**
  * {@inheritdoc}
  */
 protected function getTemplateVariables()
 {
     $clientId = $this->_persistenceHelper->getClientId($this->_provider);
     $clientSecret = $this->_persistenceHelper->getClientSecret($this->_provider);
     $tokens = $this->getOptionPersistence()->fetch(tubepress_api_options_Names::OAUTH2_TOKENS);
     $decodedTokens = json_decode($tokens, true);
     $providerName = $this->_provider->getName();
     if (!isset($decodedTokens[$providerName]) || !is_array($decodedTokens[$providerName])) {
         $slugs = array();
     } else {
         $slugs = array_keys($decodedTokens[$providerName]);
     }
     return array('clientId' => $clientId, 'clientSecret' => $clientSecret, 'provider' => $this->_provider, 'oauth2StartUrl' => $this->_oauth2Environment->getAuthorizationInitiationUrl($this->_provider), 'slugs' => $slugs);
 }
 /**
  * {@inheritdoc}
  */
 protected function getTemplateVariables()
 {
     $redirectUrl = $this->_oauth2Environment->getRedirectionUrl($this->_provider);
     $instructions = $this->_provider->getTranslatedClientRegistrationInstructions($this->_translator, $redirectUrl);
     return array('translatedInstructions' => $instructions);
 }
示例#4
0
 private function _getInfo(tubepress_spi_http_oauth2_Oauth2ProviderInterface $provider, $dataPoint)
 {
     $clients = $this->_persistence->fetch(tubepress_api_options_Names::OAUTH2_CLIENT_DETAILS);
     $decodedClients = json_decode($clients, true);
     $providerName = $provider->getName();
     $path = $providerName . '.' . $dataPoint;
     return $this->_arrayReader->getAsString($decodedClients, $path, null);
 }
 private function _buildUrl(tubepress_spi_http_oauth2_Oauth2ProviderInterface $provider, $state)
 {
     $authorizationUrl = $provider->getAuthorizationEndpoint();
     if (!$authorizationUrl instanceof tubepress_api_url_UrlInterface) {
         $this->bail('OAuth2 provider returned a non URL.');
     }
     $clientId = $this->getPersistenceHelper()->getClientId($provider);
     $clientSecret = $this->getPersistenceHelper()->getClientSecret($provider);
     $query = $authorizationUrl->getQuery();
     $redirectUrl = $this->getOauth2Environment()->getRedirectionUrl($provider);
     $query->set('response_type', 'code')->set('client_id', $clientId)->set('state', $state)->set('redirect_uri', $redirectUrl->toString());
     $provider->onAuthorizationUrl($authorizationUrl, $clientId, $clientSecret);
     $event = $this->_eventDispatcher->newEventInstance($authorizationUrl, array('provider' => $provider));
     $this->_eventDispatcher->dispatch(tubepress_api_event_Events::OAUTH2_URL_AUTHORIZATION, $event);
     $authorizationUrl = $event->getSubject();
     if (!$authorizationUrl instanceof tubepress_api_url_UrlInterface) {
         $this->bail('Non authorization URL returned.');
     }
     return $authorizationUrl;
 }
 private function _getSessionKey(tubepress_spi_http_oauth2_Oauth2ProviderInterface $provider)
 {
     if (version_compare(phpversion(), '5.4.0', '>=')) {
         $sessionStatus = session_status();
         $sessionActive = $sessionStatus === PHP_SESSION_ACTIVE;
     } else {
         $sessionActive = session_id() === '';
     }
     if (!$sessionActive) {
         $sessionStarted = @session_start();
         if (!$sessionStarted) {
             $this->bail('Unable to start session.');
         }
     }
     return 'tubepress_oauth2_state_' . $provider->getName();
 }
示例#7
0
 public function __construct(tubepress_spi_http_oauth2_Oauth2ProviderInterface $provider, tubepress_api_options_PersistenceInterface $persistence, tubepress_api_http_RequestParametersInterface $requestParams, tubepress_api_template_TemplatingInterface $templating, tubepress_http_oauth2_impl_util_PersistenceHelper $persistenceHelper)
 {
     parent::__construct('clientId_' . $provider->getName(), $persistence, $requestParams, $templating, $provider->getUntranslatedTermForClientId());
     $this->_persistenceHelper = $persistenceHelper;
     $this->_provider = $provider;
 }
 private function _checkResponseForError(tubepress_spi_http_oauth2_Oauth2ProviderInterface $provider, tubepress_api_http_message_ResponseInterface $response)
 {
     if (intval($response->getStatusCode()) === 200) {
         return;
     }
     if (intval($response->getStatusCode()) === 400) {
         $body = $response->getBody()->toString();
         $decoded = json_decode($body, true);
         if (is_array($decoded) && isset($decoded['error'])) {
             throw new RuntimeException(sprintf('%s responded with an HTTP 400: %s', $provider->getDisplayName(), $decoded['error']));
         }
     }
     throw new RuntimeException(sprintf('%s responded with an HTTP %s: %s', $provider->getDisplayName(), $response->getStatusCode(), $response->getBody()->toString()));
 }