/** * @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); }
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(); }
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())); }