/** * Start the OpenID authentication process. See steps 1-2 in the * overview at the top of this file. * * @param User_url: Identity URL given by the user. This method * performs a textual transformation of the URL to try and make * sure it is normalized. For example, a user_url of example.com * will be normalized to http://example.com/ normalizing and * resolving any redirects the server might issue. * * @return Auth_OpenID_AuthRequest $auth_request An object * containing the discovered information will be returned, with a * method for building a redirect URL to the server, as described * in step 3 of the overview. This object may also be used to add * extension arguments to the request, using its 'addExtensionArg' * method. */ function begin($user_url) { $discoverMethod = '_Auth_OpenID_discoverServiceList'; $openid_url = $user_url; if (Services_Yadis_identifierScheme($user_url) == 'XRI') { $discoverMethod = '_Auth_OpenID_discoverXRIServiceList'; } else { $openid_url = Auth_OpenID::normalizeUrl($user_url); } $disco = new Services_Yadis_Discovery($this->session, $openid_url, $this->session_key_prefix); // Set the 'stale' attribute of the manager. If discovery // fails in a fatal way, the stale flag will cause the manager // to be cleaned up next time discovery is attempted. $m = $disco->getManager(); $loader = new Services_Yadis_ManagerLoader(); if ($m) { if ($m->stale) { $disco->destroyManager(); } else { $m->stale = true; $disco->session->set($disco->session_key, serialize($loader->toSession($m))); } } $endpoint = $disco->getNextService($discoverMethod, $this->consumer->fetcher); // Reset the 'stale' attribute of the manager. $m =& $disco->getManager(); if ($m) { $m->stale = false; $disco->session->set($disco->session_key, serialize($loader->toSession($m))); } if ($endpoint === null) { return null; } else { return $this->beginWithoutDiscovery($endpoint); } }
function test_managerServices() { global $__yadis_2entries_flipped_priority; $url = "http://bogus.xxx/"; $sess = new Tests_Auth_OpenID_DiscoverSession(); $m = new Services_Yadis_Discovery($sess, $url); $documents = array($url => array("application/xrds+xml", $__yadis_2entries_flipped_priority)); $fetcher = new _DiscoveryMockFetcher($documents); $expected = array("http://frank.livejournal.com/", "http://smoker.myopenid.com/"); foreach ($expected as $openid) { $s = $m->getNextService('_Auth_OpenID_discoverServiceList', $fetcher); $this->assertEquals($s->delegate, $openid); } }