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