示例#1
0
 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');
 }
示例#2
0
/** 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);
    }
}
示例#3
0
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;
}
示例#4
0
 function openidToNickname($openid)
 {
     if (Auth_Yadis_identifierScheme($openid) == 'XRI') {
         return $this->xriToNickname($openid);
     } else {
         return $this->urlToNickname($openid);
     }
 }
示例#5
0
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);
}
示例#6
0
 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;
     }
 }