function runTest() { $this->assertEquals(Auth_Yadis_identifierScheme('=john.smith'), 'XRI'); $this->assertEquals(Auth_Yadis_identifierScheme(''), 'URI'); $this->assertEquals(Auth_Yadis_identifierScheme('@smiths/john'), 'XRI'); $this->assertEquals(Auth_Yadis_identifierScheme('smoker.myopenid.com'), 'URI'); $this->assertEquals(Auth_Yadis_identifierScheme('xri://=john'), 'XRI'); }
/** ported from mediawiki's openid extension: http://www.mediawiki.org/wiki/Extension:OpenID **/ function toUserName($openid) { if (Auth_Yadis_identifierScheme($openid) == 'XRI') { return toUserNameXri($openid); } else { return toUserNameUrl($openid); } }
function Auth_OpenID_discover($uri, $fetcher) { // If the fetcher (i.e., PHP) doesn't support SSL, we can't do // discovery on an HTTPS URL. if ($fetcher->isHTTPS($uri) && !$fetcher->supportsSSL()) { return array($uri, array()); } if (Auth_Yadis_identifierScheme($uri) == 'XRI') { $result = Auth_OpenID_discoverXRI($uri, $fetcher); } else { $result = Auth_OpenID_discoverURI($uri, $fetcher); } // If the fetcher doesn't support SSL, we can't interact with // HTTPS server URLs; remove those endpoints from the list. if (!$fetcher->supportsSSL()) { $http_endpoints = array(); list($new_uri, $endpoints) = $result; foreach ($endpoints as $e) { if (!$fetcher->isHTTPS($e->server_url)) { $http_endpoints[] = $e; } } $result = array($new_uri, $http_endpoints); } return $result; }
function openidToNickname($openid) { if (Auth_Yadis_identifierScheme($openid) == 'XRI') { return $this->xriToNickname($openid); } else { return $this->urlToNickname($openid); } }
function TryAuthByRequest() { $context = Model_Context::getInstance(); /* User clicked cancel button at login form */ if (isset($_GET['openid_cancel']) || isset($_GET['openid_cancel_x'])) { header("Location: " . $context->getProperty('uri.host') . $context->getProperty('uri.blog')); exit(0); } if (!empty($_GET['requestURI'])) { $requestURI = $_GET['requestURI']; } else { $requestURI = $context->getProperty('uri.blog'); } $tr = array(); $tr['need_writers'] = ''; if (empty($_GET['fallbackURI'])) { if (!empty($_GET['need_writers'])) { $tr['fallbackURI'] = $context->getProperty('uri.blog') . "/login?requestURI=" . urlencode($requestURI); $tr['need_writers'] = '1'; } else { $tr['fallbackURI'] = $context->getProperty('uri.blog') . "/login/openid/guest?requestURI=" . urlencode($requestURI); } } else { $tr['fallbackURI'] = $_GET['fallbackURI']; } $errmsg = ""; $openid = ""; if (!empty($_GET['openid_identifier'])) { $openid = $_GET['openid_identifier']; } if (empty($openid)) { $errmsg = _text('오픈아이디를 입력하세요'); } else { if (strstr($openid, ".") === false) { require_once ROOT . '/framework/legacy/Textcube.Control.Openid.php'; require_once OPENID_LIBRARY_ROOT . "Auth/Yadis/XRI.php"; if (Auth_Yadis_identifierScheme($openid) == 'URI') { $errmsg = _text('오픈아이디에 도메인 부분이 없습니다. 예) textcube.example.com'); } } } if ($errmsg) { OpenIDConsumer::printErrorReturn($errmsg, $tr['fallbackURI']); exit(0); } if (isset($_GET['openid_remember'])) { $remember_openid = true; } else { $remember_openid = false; } if (!empty($_GET['authenticate_only'])) { $tr['authenticate_only'] = '1'; } else { $tr['authenticate_only'] = ''; } $tr['requestURI'] = $requestURI; $tid = Transaction::pickle($tr); $tr['finishURL'] = $context->getProperty('uri.host') . $context->getProperty('uri.blog') . "/login/openid?action=finish&tid={$tid}"; Transaction::repickle($tid, $tr); $consumer = new OpenIDConsumer($tid); return $consumer->tryAuth($tid, $openid, $remember_openid); }
static function OpenIDToUrl($openid) { /* ID is either an URL already or an i-name */ if (Auth_Yadis_identifierScheme($openid) == 'XRI') { return SpecialOpenID::xriToUrl($openid); } else { return $openid; } }