/** * Receive an incoming request. * * This function never returns. */ public function receiveRequest() { $request = $this->server->decodeRequest(); if (!in_array($request->mode, array('checkid_immediate', 'checkid_setup'), TRUE)) { $this->sendResponse($this->server->handleRequest($request)); } $state = array('request' => $request); $this->processRequest($state); }
/** * Receive an incoming request. * * This function never returns. */ public function receiveRequest() { SimpleSAML_Utilities::maskErrors(E_NOTICE | E_STRICT); $request = $this->server->decodeRequest(); if (!in_array($request->mode, array('checkid_immediate', 'checkid_setup'), TRUE)) { $this->sendResponse($this->server->handleRequest($request)); } $state = array('request' => $request); $this->processRequest($state); }
/** * Executes index action * * @param sfRequest $request A request object */ public function executeIndex(sfWebRequest $request) { opApplicationConfiguration::registerJanRainOpenID(); require_once 'Auth/OpenID/Server.php'; require_once 'Auth/OpenID/FileStore.php'; $url = $this->getController()->genUrl('OpenID/index', true); $server = new Auth_OpenID_Server(new Auth_OpenID_FileStore(sfConfig::get('sf_cache_dir')), $url); $this->getResponse()->setHttpHeader('X-XRDS-Location', $this->getController()->genUrl('OpenID/signonXrds', true)); $openIDRequest = $server->decodeRequest(); if (!$openIDRequest) { $_SESSION['request'] = null; return sfView::SUCCESS; } $sregRequest = Auth_OpenID_SRegRequest::fromOpenIDRequest($openIDRequest); $axRequest = Auth_OpenID_AX_FetchRequest::fromOpenIDRequest($openIDRequest); $this->requestedProfiles = $this->createListOfRequestedProfiles($sregRequest, $axRequest); $_SESSION['request'] = serialize($openIDRequest); if (!empty($openIDRequest->mode) && in_array($openIDRequest->mode, array('checkid_immediate', 'checkid_setup'))) { if ($openIDRequest->idSelect()) { if ($openIDRequest->mode === 'checkid_immediate') { $response = $openIDRequest->answer(false); } else { $this->getRequest()->setMethod(sfWebRequest::GET); $_SERVER['QUERY_STRING'] = http_build_query($openIDRequest->message->toPostArgs()); $this->forwardUnless($this->getUser()->isAuthenticated() && $this->getUser()->getMember(), 'member', 'login'); $log = Doctrine::getTable('OpenIDTrustLog')->findByOpenID($openIDRequest->trust_root, $this->getUser()->getMemberId()); if ($log && $log->is_permanent) { $request->setParameter('trust', '1'); $this->forward('OpenID', 'trust'); } $this->info = $openIDRequest; return 'Trust'; } } elseif (!$openIDRequest->identity && !$openIDRequest->idSelect()) { $this->forward('@error'); } elseif ($openIDRequest->immediate) { $response = $openIDRequest->answer(false, $url); } else { $this->forwardUnless($this->getUser()->isAuthenticated() && $this->getUser()->getMember(), 'member', 'login'); $log = Doctrine::getTable('OpenIDTrustLog')->findByOpenID($openIDRequest->trust_root, $this->getUser()->getMemberId()); if ($log && $log->is_permanent) { $request->setParameter('trust', '1'); $this->forward('OpenID', 'trust'); } $this->info = $openIDRequest; return 'Trust'; } } else { $response = $server->handleRequest($openIDRequest); } $response = $server->encodeResponse($response); return $this->writeResponse($response); }