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'); }
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); }