示例#1
0
 function OpenIDConvert($openid_url)
 {
     global $wgUser, $wgOut;
     # Expand Interwiki
     $openid_url = OpenIDInterwikiExpand($openid_url);
     if (!OpenIDCanLogin($openid_url)) {
         $wgOut->errorpage('openidpermission', 'openidpermissiontext');
         return;
     }
     $other = OpenIDGetUser($openid_url);
     if (isset($other)) {
         if ($other->getId() == $wgUser->getID()) {
             $wgOut->errorpage('openiderror', 'openidconvertyourstext');
         } else {
             $wgOut->errorpage('openiderror', 'openidconvertothertext');
         }
         return;
     }
     # If we're OK to here, let the user go log in
     OpenIDLogin($openid_url, 'OpenIDConvert/Finish');
 }
示例#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);
 }