/**
  * 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);
     }
 }
Exemplo n.º 2
0
 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);
     }
 }