Example #1
0
 function wfSpecialOpenIDFinish($par)
 {
     global $wgUser, $wgOut, $wgRequest;
     # Shouldn't work if you're already logged in.
     if ($wgUser->getID() != 0) {
         OpenIDAlreadyLoggedIn();
         return;
     }
     $consumer = OpenIDConsumer();
     switch ($par) {
         case 'ChooseName':
             list($response, $sreg) = OpenIDConsumerFetchValues();
             if (!isset($response) || $response->status != Auth_OpenID_SUCCESS || !isset($response->identity_url)) {
                 OpenIDConsumerClearValues();
                 # No messing around, here
                 $wgOut->errorpage('openiderror', 'openiderrortext');
                 return;
             }
             if ($wgRequest->getCheck('wpCancel')) {
                 OpenIDConsumerClearValues();
                 $wgOut->errorpage('openidcancel', 'openidcanceltext');
                 return;
             }
             $choice = $wgRequest->getText('wpNameChoice');
             $nameValue = $wgRequest->getText('wpNameValue');
             wfDebug("OpenID: Got form values '{$choice}' and '{$nameValue}'\n");
             $name = OpenIDGetName($response, $sreg, $choice, $nameValue);
             if (!$name || !OpenIDUserNameOK($name)) {
                 OpenIDChooseNameForm($response, $sreg);
                 return;
             }
             $user = OpenIDCreateUser($response->identity_url, $sreg, $name);
             if (!isset($user)) {
                 OpenIDConsumerClearValues();
                 $wgOut->errorpage('openiderror', 'openiderrortext');
                 return;
             }
             $wgUser = $user;
             OpenIDConsumerClearValues();
             OpenIDFinishLogin($response->identity_url);
             break;
         default:
             # No parameter, returning from a server
             $response = $consumer->complete($_GET);
             if (!isset($response)) {
                 $wgOut->errorpage('openiderror', 'openiderrortext');
                 return;
             }
             switch ($response->status) {
                 case Auth_OpenID_CANCEL:
                     // This means the authentication was cancelled.
                     $wgOut->errorpage('openidcancel', 'openidcanceltext');
                     break;
                 case Auth_OpenID_FAILURE:
                     $wgOut->errorpage('openidfailure', 'openidfailuretext');
                     break;
                 case Auth_OpenID_SUCCESS:
                     // This means the authentication succeeded.
                     $openid = $response->identity_url;
                     $sreg = $response->extensionResponse('sreg');
                     if (!isset($openid)) {
                         $wgOut->errorpage('openiderror', 'openiderrortext');
                         return;
                     }
                     $user = OpenIDGetUser($openid);
                     if (isset($user)) {
                         OpenIDUpdateUser($user, $sreg);
                         # update from server
                     } else {
                         # For easy names
                         $name = OpenIDCreateName($openid, $sreg);
                         if ($name) {
                             $user = OpenIDCreateUser($openid, $sreg, $name);
                         } else {
                             # For hard names
                             OpenIDConsumerSaveValues($response, $sreg);
                             OpenIDChooseNameForm($response, $sreg);
                             return;
                         }
                     }
                     if (!isset($user)) {
                         $wgOut->errorpage('openiderror', 'openiderrortext');
                     } else {
                         $wgUser = $user;
                         OpenIDFinishLogin($openid);
                     }
             }
     }
 }
Example #2
0
 function OpenIDConvertFinish()
 {
     global $wgUser, $wgOut;
     $consumer = OpenIDConsumer();
     $response = $consumer->complete($_GET);
     if (!isset($response)) {
         $wgOut->errorpage('openiderror', 'openiderrortext');
         return;
     }
     switch ($response->status) {
         case Auth_OpenID_CANCEL:
             // This means the authentication was cancelled.
             $wgOut->errorpage('openidcancel', 'openidcanceltext');
             break;
         case Auth_OpenID_FAILURE:
             $wgOut->errorpage('openidfailure', 'openidfailuretext');
             break;
         case Auth_OpenID_SUCCESS:
             // This means the authentication succeeded.
             $openid_url = $response->identity_url;
             if (!isset($openid_url)) {
                 $wgOut->errorpage('openiderror', 'openiderrortext');
                 return;
             }
             # We check again for dupes; this may be normalized or
             # reformatted by the server.
             $other = OpenIDGetUser($openid_url);
             if (isset($other)) {
                 if ($other->getId() == $wgUser->getID()) {
                     $wgOut->errorpage('openiderror', 'openidconvertyourstext');
                 } else {
                     $wgOut->errorpage('openiderror', 'openidconvertothertext');
                 }
                 return;
             }
             OpenIDSetUserUrl($wgUser, $openid_url);
             $wgOut->setPageTitle(wfMsg('openidconvertsuccess'));
             $wgOut->setRobotpolicy('noindex,nofollow');
             $wgOut->setArticleRelated(false);
             $wgOut->addWikiText(wfMsg('openidconvertsuccesstext', $openid_url));
             $wgOut->returnToMain();
     }
 }