You are here

public function LingotekOAuthServer::authorizeFinish in Lingotek Translation 7.4

Same name and namespace in other branches
  1. 7.7 lib/oauth-php/library/LingotekOAuthServer.php \LingotekOAuthServer::authorizeFinish()
  2. 7.5 lib/oauth-php/library/LingotekOAuthServer.php \LingotekOAuthServer::authorizeFinish()
  3. 7.6 lib/oauth-php/library/LingotekOAuthServer.php \LingotekOAuthServer::authorizeFinish()

* Overrule this method when you want to display a nice page when * the authorization is finished. This function does not know if the authorization was * succesfull, you need to check the token in the database. * *

Parameters

boolean authorized if the current token (oauth_token param) is authorized or not: * @param int user_id user for which the token was authorized (or denied) * @return string verifier For 1.0a Compatibility

File

lib/oauth-php/library/LingotekOAuthServer.php, line 207

Class

LingotekOAuthServer

Code

public function authorizeFinish($authorized, $user_id) {
  LingotekOAuthRequestLogger::start($this);
  $token = $this
    ->getParam('oauth_token', true);
  $verifier = null;
  if ($this->session
    ->get('verify_oauth_token') == $token) {

    // Flag the token as authorized, or remove the token when not authorized
    $store = OAuthStore::instance();

    // Fetch the referrer host from the oauth callback parameter
    $referrer_host = '';
    $oauth_callback = false;
    $verify_oauth_callback = $this->session
      ->get('verify_oauth_callback');
    if (!empty($verify_oauth_callback) && $verify_oauth_callback != 'oob') {

      // OUT OF BAND
      $oauth_callback = $this->session
        ->get('verify_oauth_callback');
      $ps = parse_url($oauth_callback);
      if (isset($ps['host'])) {
        $referrer_host = $ps['host'];
      }
    }
    if ($authorized) {
      LingotekOAuthRequestLogger::addNote('Authorized token "' . $token . '" for user ' . $user_id . ' with referrer "' . $referrer_host . '"');

      // 1.0a Compatibility : create a verifier code
      $verifier = $store
        ->authorizeConsumerRequestToken($token, $user_id, $referrer_host);
    }
    else {
      LingotekOAuthRequestLogger::addNote('Authorization rejected for token "' . $token . '" for user ' . $user_id . "\nToken has been deleted");
      $store
        ->deleteConsumerRequestToken($token);
    }
    if (!empty($oauth_callback)) {
      $params = array(
        'oauth_token' => rawurlencode($token),
      );

      // 1.0a Compatibility : if verifier code has been generated, add it to the URL
      if ($verifier) {
        $params['oauth_verifier'] = $verifier;
      }
      $uri = preg_replace('/\\s/', '%20', $oauth_callback);
      if (!empty($this->allowed_uri_schemes)) {
        if (!in_array(substr($uri, 0, strpos($uri, '://')), $this->allowed_uri_schemes)) {
          throw new OAuthException2('Illegal protocol in redirect uri ' . $uri);
        }
      }
      else {
        if (!empty($this->disallowed_uri_schemes)) {
          if (in_array(substr($uri, 0, strpos($uri, '://')), $this->disallowed_uri_schemes)) {
            throw new OAuthException2('Illegal protocol in redirect uri ' . $uri);
          }
        }
      }
      $this
        ->redirect($oauth_callback, $params);
    }
  }
  LingotekOAuthRequestLogger::flush();
  return $verifier;
}