Пример #1
0
 function handle($args)
 {
     parent::handle($args);
     if (common_is_real_login()) {
         // TRANS: Client error message trying to log on with OpenID while already logged on.
         $this->clientError(_m('Already logged in.'));
     } else {
         if ($_SERVER['REQUEST_METHOD'] == 'POST') {
             $provider = common_config('openid', 'trusted_provider');
             if ($provider) {
                 $openid_url = $provider;
                 if (common_config('openid', 'append_username')) {
                     $openid_url .= $this->trimmed('openid_username');
                 }
             } else {
                 $openid_url = $this->trimmed('openid_url');
             }
             oid_assert_allowed($openid_url);
             $rememberme = $this->boolean('rememberme');
             common_ensure_session();
             $_SESSION['openid_rememberme'] = $rememberme;
             $result = oid_authenticate($openid_url, 'finishopenidlogin');
             if (is_string($result)) {
                 # error message
                 unset($_SESSION['openid_rememberme']);
                 $this->showForm($result, $openid_url);
             }
         } else {
             $openid_url = oid_get_last();
             $this->showForm(null, $openid_url);
         }
     }
 }
 function handle($args)
 {
     parent::handle($args);
     if (common_is_real_login()) {
         $this->clientError(_m('Already logged in.'));
     } else {
         if ($_SERVER['REQUEST_METHOD'] == 'POST') {
             $openid_url = $this->trimmed('openid_url');
             oid_assert_allowed($openid_url);
             # CSRF protection
             $token = $this->trimmed('token');
             if (!$token || $token != common_session_token()) {
                 $this->showForm(_m('There was a problem with your session token. Try again, please.'), $openid_url);
                 return;
             }
             $rememberme = $this->boolean('rememberme');
             common_ensure_session();
             $_SESSION['openid_rememberme'] = $rememberme;
             $result = oid_authenticate($openid_url, 'finishopenidlogin');
             if (is_string($result)) {
                 # error message
                 unset($_SESSION['openid_rememberme']);
                 $this->showForm($result, $openid_url);
             }
         } else {
             $openid_url = oid_get_last();
             $this->showForm(null, $openid_url);
         }
     }
 }
Пример #3
0
 function handle($args)
 {
     parent::handle($args);
     if (common_is_real_login()) {
         // TRANS: Client error message trying to log on with OpenID while already logged on.
         $this->clientError(_m('Already logged in.'));
     } else {
         if ($_SERVER['REQUEST_METHOD'] == 'POST') {
             $provider = common_config('openid', 'trusted_provider');
             if ($provider) {
                 $openid_url = $provider;
                 if (common_config('openid', 'append_username')) {
                     $openid_url .= $this->trimmed('openid_username');
                 }
             } else {
                 $openid_url = $this->trimmed('openid_url');
             }
             oid_assert_allowed($openid_url);
             # CSRF protection
             $token = $this->trimmed('token');
             if (!$token || $token != common_session_token()) {
                 // TRANS: Message given when there is a problem with the user's session token.
                 $this->showForm(_m('There was a problem with your session token. Try again, please.'), $openid_url);
                 return;
             }
             $rememberme = $this->boolean('rememberme');
             common_ensure_session();
             $_SESSION['openid_rememberme'] = $rememberme;
             $result = oid_authenticate($openid_url, 'finishopenidlogin');
             if (is_string($result)) {
                 # error message
                 unset($_SESSION['openid_rememberme']);
                 $this->showForm($result, $openid_url);
             }
         } else {
             $openid_url = oid_get_last();
             $this->showForm(null, $openid_url);
         }
     }
 }
Пример #4
0
 function tryLogin()
 {
     $consumer = oid_consumer();
     $response = $consumer->complete(common_local_url('finishopenidlogin'));
     if ($response->status == Auth_OpenID_CANCEL) {
         // TRANS: Status message in case the response from the OpenID provider is that the logon attempt was cancelled.
         $this->message(_m('OpenID authentication cancelled.'));
         return;
     } else {
         if ($response->status == Auth_OpenID_FAILURE) {
             // TRANS: OpenID authentication failed; display the error message. %s is the error message.
             $this->message(sprintf(_m('OpenID authentication failed: %s'), $response->message));
         } else {
             if ($response->status == Auth_OpenID_SUCCESS) {
                 // This means the authentication succeeded; extract the
                 // identity URL and Simple Registration data (if it was
                 // returned).
                 $display = $response->getDisplayIdentifier();
                 $canonical = $response->endpoint->canonicalID ? $response->endpoint->canonicalID : $response->getDisplayIdentifier();
                 oid_assert_allowed($display);
                 oid_assert_allowed($canonical);
                 $sreg_resp = Auth_OpenID_SRegResponse::fromSuccessResponse($response);
                 if ($sreg_resp) {
                     $sreg = $sreg_resp->contents();
                 }
                 // Launchpad teams extension
                 if (!oid_check_teams($response)) {
                     $this->message(_m('OpenID authentication aborted: you are not allowed to login to this site.'));
                     return;
                 }
                 $user = oid_get_user($canonical);
                 if ($user) {
                     oid_set_last($display);
                     # XXX: commented out at @edd's request until better
                     # control over how data flows from OpenID provider.
                     # oid_update_user($user, $sreg);
                     common_set_user($user);
                     common_real_login(true);
                     if (isset($_SESSION['openid_rememberme']) && $_SESSION['openid_rememberme']) {
                         common_rememberme($user);
                     }
                     unset($_SESSION['openid_rememberme']);
                     $this->goHome($user->nickname);
                 } else {
                     $this->saveValues($display, $canonical, $sreg);
                     $this->showForm(null, $this->bestNewNickname($display, $sreg));
                 }
             }
         }
     }
 }
Пример #5
0
 /**
  * Handle a POST user credential check in apioauthauthorization.
  * If given an OpenID URL, we'll pass us over to the regular things
  * and then redirect back here on completion.
  *
  * @fixme merge with common code for main OpenID login form
  * @param HTMLOutputter $action
  */
 function onStartOAuthLoginCheck($action, &$user)
 {
     $provider = common_config('openid', 'trusted_provider');
     if ($provider) {
         $openid_url = $provider;
         if (common_config('openid', 'append_username')) {
             $openid_url .= $action->trimmed('openid_username');
         }
     } else {
         $openid_url = $action->trimmed('openid_url');
     }
     if ($openid_url) {
         require_once dirname(__FILE__) . '/openid.php';
         oid_assert_allowed($openid_url);
         $returnto = common_local_url('ApiOauthAuthorize', array(), array('oauth_token' => $action->arg('oauth_token'), 'mode' => $action->arg('mode')));
         common_set_returnto($returnto);
         // This will redirect if functional...
         $result = oid_authenticate($openid_url, 'finishopenidlogin');
         if (is_string($result)) {
             # error message
             throw new ServerException($result);
         } else {
             exit(0);
         }
     }
     return true;
 }