function doAuth($info, $trusted = null, $fail_cancels = false) { if (!$info) { // There is no authentication information, so bail return authCancel(null); } $req_url = $info->identity; $user = getLoggedInUser(); setRequestInfo($info); if ($req_url != $user) { return login_render(array(), $req_url, $req_url); } $sites = getSessionSites(); $trust_root = $info->trust_root; $fail_cancels = $fail_cancels || isset($sites[$trust_root]); $trusted = isset($trusted) ? $trusted : isTrusted($req_url, $trust_root); if ($trusted) { setRequestInfo(); $server =& getServer(); $response =& $info->answer(true); $webresponse =& $server->encodeResponse($response); $new_headers = array(); foreach ($webresponse->headers as $k => $v) { $new_headers[] = $k . ": " . $v; } return array($new_headers, $webresponse->body); } elseif ($fail_cancels) { return authCancel($info); } else { return trust_render($info); } }
function doAuth($info, $trusted = null, $fail_cancels = false, $idpSelect = null) { if (!$info) { // There is no authentication information, so bail return authCancel(null); } if ($info->idSelect()) { if ($idpSelect) { $req_url = idURL($idpSelect); } else { $trusted = false; } } else { $req_url = $info->identity; } $user = getLoggedInUser(); setRequestInfo($info); if (!$info->idSelect() && $req_url != idURL($user)) { return login_render(array(), $req_url, $req_url); } $trust_root = $info->trust_root; if ($trusted) { setRequestInfo(); $server =& getServer(); $response =& $info->answer(true, null, $req_url); // Answer with some sample Simple Registration data. $sreg_data = array('fullname' => 'Example User', 'nickname' => 'example', 'dob' => '1970-01-01', 'email' => '*****@*****.**', 'gender' => 'F', 'postcode' => '12345', 'country' => 'ES', 'language' => 'eu', 'timezone' => 'America/New_York'); // Add the simple registration response values to the OpenID // response message. $sreg_request = Auth_OpenID_SRegRequest::fromOpenIDRequest($info); $sreg_response = Auth_OpenID_SRegResponse::extractResponse($sreg_request, $sreg_data); $sreg_response->toMessage($response->fields); // Generate a response to send to the user agent. $webresponse =& $server->encodeResponse($response); $new_headers = array(); foreach ($webresponse->headers as $k => $v) { $new_headers[] = $k . ": " . $v; } return array($new_headers, $webresponse->body); } elseif ($fail_cancels) { return authCancel($info); } else { return trust_render($info); } }
/** * Log in a user and potentially continue the requested identity approval */ function action_login() { $method = $_SERVER['REQUEST_METHOD']; switch ($method) { case 'GET': return login_render(); case 'POST': $info = getRequestInfo(); $fields = $_POST; if (isset($fields['cancel'])) { return authCancel($info); } list($errors, $openid_url) = login_checkInput($fields); if (count($errors) || !$openid_url) { $needed = $info ? $info->identity : false; return login_render($errors, @$fields['openid_url'], $needed); } else { setLoggedInUser($openid_url); return doAuth($info); } default: return login_render(array('Unsupported HTTP method: $method')); } }