Example #1
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();
     }
 }
Example #2
0
 function OpenIDLogin($openid_url, $finish_page = 'OpenIDFinish')
 {
     global $wgUser, $wgTrustRoot, $wgOut;
     # If it's an interwiki link, expand it
     $openid_url = OpenIDInterwikiExpand($openid_url);
     wfDebug("New URL is '{$openid_url}'\n");
     # Check if the URL is allowed
     if (!OpenIDCanLogin($openid_url)) {
         $wgOut->errorpage('openidpermission', 'openidpermissiontext');
         return;
     }
     $sk = $wgUser->getSkin();
     if (isset($wgTrustRoot)) {
         $trust_root = $wgTrustRoot;
     } else {
         global $wgArticlePath, $wgServer;
         $root_article = str_replace('$1', '', $wgArticlePath);
         $trust_root = $wgServer . $root_article;
     }
     $consumer = OpenIDConsumer();
     if (!$consumer) {
         $wgOut->errorpage('openiderror', 'openiderrortext');
         return;
     }
     # Make sure the user has a session!
     global $wgSessionStarted;
     if (!$wgSessionStarted) {
         $wgUser->SetupSession();
     }
     $auth_request = $consumer->begin($openid_url);
     // Handle failure status return values.
     if (!$auth_request) {
         $wgOut->errorpage('openiderror', 'openiderrortext');
         return;
     }
     # Check the processed URLs, too
     $endpoint = $auth_request->endpoint;
     if (isset($endpoint)) {
         # Check if the URL is allowed
         if (isset($endpoint->identity_url) && !OpenIDCanLogin($endpoint->identity_url)) {
             $wgOut->errorpage('openidpermission', 'openidpermissiontext');
             return;
         }
         if (isset($endpoint->delegate) && !OpenIDCanLogin($endpoint->delegate)) {
             $wgOut->errorpage('openidpermission', 'openidpermissiontext');
             return;
         }
     }
     $auth_request->addExtensionArg('sreg', 'optional', 'nickname,email,fullname,language,timezone');
     $process_url = OpenIDFullUrl($finish_page);
     $redirect_url = $auth_request->redirectURL($trust_root, $process_url);
     # OK, now go
     $wgOut->redirect($redirect_url);
 }