exit; } } elseif (isset($query['openid.mode']) || isset($query['openid_mode'])) { $openid_mode = ''; if (isset($query['openid.mode'])) { $openid_mode = $query['openid.mode']; } else { if (isset($query['openid_mode'])) { $openid_mode = $query['openid_mode']; } } if ($openid_mode == 'cancel') { COM_updateSpeedlimit('login'); echo COM_refresh($_CONF['site_url'] . '/users.php?msg=90'); } else { $openid = $handler->getOpenID(); $req = new ConsumerRequest($openid, $query, 'GET'); $response = $consumer->handle_response($req); $response->doAction($handler); } } else { COM_updateSpeedlimit('login'); echo COM_refresh($_CONF['site_url'] . '/users.php?msg=91'); } // end OpenID remote authentication method // begin OAuth authentication method(s) } elseif ($_CONF['user_login_method']['oauth'] && isset($_GET['oauth_login'])) { $modules = SEC_collectRemoteOAuthModules(); $active_service = count($modules) == 0 ? false : in_array($_GET['oauth_login'], $modules); if (!$active_service) { $status = -1;
function dispatch() { // generate a dictionary of arguments $query = formArgstoDict(); // create consumer and handler objects $consumer = new SimpleConsumer(); $handler = new SimpleActionHandler($query, $consumer); // extract identity url from arguments. Will be null if absent from query. $identity_url = isset($query['identity_url']) ? $query['identity_url'] : null; if ($identity_url) { $ret = $consumer->find_identity_info($identity_url); if (!$ret) { setAlert(sprintf('Unable to find openid server for identity url %s', $identity_url)); } else { // found identity server info list($identity_url, $server_id, $server_url) = $ret; // build trust root - this examines the script env and builds // based on your running location. In practice this may be static. // You will likely want it to be your entire website, not just // this script. $trust_root = isset($_SERVER['SCRIPT_URI']) ? $_SERVER['SCRIPT_URI'] : 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']; // build url to application for use in creating return_to $app_url = isset($_SERVER['SCRIPT_URI']) ? $_SERVER['SCRIPT_URI'] : 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']; // create return_to url from app_url $return_to = $handler->createReturnTo($app_url, $identity_url); // handle the request $redirect_url = $consumer->handle_request($server_id, $server_url, $return_to, $trust_root); // redirect the user-agent to the server my_redirect($redirect_url); } } else { if (isset($query['openid.mode']) || isset($query['openid_mode'])) { // got a request from the server. build a Request object and pass // it off to the consumer object. OpendIDActionHandler handles // the various end cases (see above). $openid = $handler->getOpenID(); $req = new ConsumerRequest($openid, $query, 'GET'); $response = $consumer->handle_response($req); // let our SimpleActionHandler do the work $response->doAction($handler); } } }