summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortailor <cygnus@janrain.com>2006-04-24 18:13:26 +0000
committertailor <cygnus@janrain.com>2006-04-24 18:13:26 +0000
commit9fe157a92a14ee22518c33ba5723cfa9a902faae (patch)
tree880b4a4c3a53049af0d99a0ffd00fd9dbd01fc10
parente271bfe21ce79a7a788a4d4bac152e5ab3bef7d7 (diff)
downloadphp-openid-9fe157a92a14ee22518c33ba5723cfa9a902faae.zip
php-openid-9fe157a92a14ee22518c33ba5723cfa9a902faae.tar.gz
php-openid-9fe157a92a14ee22518c33ba5723cfa9a902faae.tar.bz2
[project @ Updated server example to work with new server impl]
-rw-r--r--examples/server/lib/actions.php50
-rw-r--r--examples/server/lib/common.php47
-rw-r--r--examples/server/lib/render.php12
-rw-r--r--examples/server/lib/render/trust.php2
-rw-r--r--examples/server/lib/session.php4
5 files changed, 65 insertions, 50 deletions
diff --git a/examples/server/lib/actions.php b/examples/server/lib/actions.php
index 546bdc6..3c331f6 100644
--- a/examples/server/lib/actions.php
+++ b/examples/server/lib/actions.php
@@ -14,8 +14,50 @@ require_once "Auth/OpenID.php";
*/
function action_default()
{
- $server = getServer();
- return handleResponse($server->getOpenIDResponse('isTrusted'));
+ $server =& getServer();
+ $method = $_SERVER['REQUEST_METHOD'];
+ $request = null;
+ if ($method == 'GET') {
+ $request = $_GET;
+ } else {
+ $request = $_POST;
+ }
+
+ $request = Auth_OpenID::fixArgs($request);
+ $request = $server->decodeRequest($request);
+
+ if (!$request) {
+ return about_render();
+ }
+
+ setRequestInfo($request);
+
+ if (in_array($request->mode,
+ array('checkid_immediate', 'checkid_setup'))) {
+
+ if (isTrusted($request->identity, $request->trust_root)) {
+ $response =& $request->answer(true);
+ } else if ($request->immediate) {
+ $response =& $request->answer(false, getServerURL());
+ } else {
+ if (!getLoggedInUser()) {
+ return login_render();
+ }
+ return trust_render($request);
+ }
+ } else {
+ $response =& $server->handleRequest($request);
+ }
+
+ $webresponse =& $server->encodeResponse($response);
+
+ foreach ($webresponse->headers as $k => $v) {
+ header("$k: $v");
+ }
+
+ header(header_connection_close);
+ print $webresponse->body;
+ exit(0);
}
/**
@@ -72,7 +114,7 @@ function action_login()
list ($errors, $openid_url) = login_checkInput($fields);
if (count($errors) || !$openid_url) {
- $needed = $info ? $info->getIdentityURL() : false;
+ $needed = $info ? $info->identity : false;
return login_render($errors, @$fields['openid_url'], $needed);
} else {
setLoggedInUser($openid_url);
@@ -92,7 +134,7 @@ function action_trust()
$trusted = isset($_POST['trust']);
if ($info && isset($_POST['remember'])) {
$sites = getSessionSites();
- $sites[$info->getTrustRoot()] = $trusted;
+ $sites[$info->trust_root] = $trusted;
setSessionSites($sites);
}
return doAuth($info, $trusted, true);
diff --git a/examples/server/lib/common.php b/examples/server/lib/common.php
index 338bad2..4bc1dac 100644
--- a/examples/server/lib/common.php
+++ b/examples/server/lib/common.php
@@ -16,38 +16,11 @@ function authCancel($info)
setRequestInfo();
$url = $info->getCancelURL();
} else {
- $server = getServer();
- $url = $server->server_url;
+ $url = getServerURL();
}
return redirect_render($url);
}
-function handleResponse($response, $do_auth=true)
-{
- list ($status, $info) = $response;
- switch($status) {
- case Auth_OpenID_REMOTE_ERROR:
- return kv_render($info, false);
- case Auth_OpenID_REMOTE_OK:
- return kv_render($info);
- case Auth_OpenID_REDIRECT:
- return redirect_render($info);
- case Auth_OpenID_DO_AUTH:
- if ($do_auth) {
- return doAuth($info);
- } else {
- return about_render('Got unexpected DO_AUTH');
- }
- case Auth_OpenID_DO_ABOUT:
- return about_render();
- case Auth_OpenID_LOCAL_ERROR:
- return about_render($info, false);
- default:
- $repr = var_export($status, true);
- return about_render("Internal error: unknown status $repr");
- }
-}
-
function doAuth($info, $trusted=null, $fail_cancels=false)
{
if (!$info) {
@@ -55,7 +28,7 @@ function doAuth($info, $trusted=null, $fail_cancels=false)
return authCancel(null);
}
- $req_url = $info->getIdentityURL();
+ $req_url = $info->identity;
$user = getLoggedInUser();
setRequestInfo($info);
@@ -64,14 +37,22 @@ function doAuth($info, $trusted=null, $fail_cancels=false)
}
$sites = getSessionSites();
- $trust_root = $info->getTrustRoot();
+ $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 = $server->getAuthResponse(&$info, true);
- return handleResponse($response, false);
+ $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 {
diff --git a/examples/server/lib/render.php b/examples/server/lib/render.php
index ff1ca20..f607f90 100644
--- a/examples/server/lib/render.php
+++ b/examples/server/lib/render.php
@@ -48,23 +48,13 @@ function link_render($url, $text=null) {
}
/**
- * Return a response to an OpenID consumer's POST
- */
-function kv_render($kv, $success=true)
-{
- $headers = array(($success ? http_ok : http_bad_request),
- header_content_text,
- header_connection_close);
- return array($headers, $kv);
-}
-
-/**
* Return an HTTP redirect response
*/
function redirect_render($redir_url)
{
$headers = array(http_found,
header_content_text,
+ header_connection_close,
'Location: ' . $redir_url,
);
$body = sprintf(redirect_message, $redir_url);
diff --git a/examples/server/lib/render/trust.php b/examples/server/lib/render/trust.php
index c00803c..60d01d0 100644
--- a/examples/server/lib/render/trust.php
+++ b/examples/server/lib/render/trust.php
@@ -20,7 +20,7 @@ function trust_render($info)
{
$current_user = getLoggedInUser();
$lnk = link_render($current_user);
- $trust_root = htmlspecialchars($info->getTrustRoot());
+ $trust_root = htmlspecialchars($info->trust_root);
$trust_url = buildURL('trust', true);
$form = sprintf(trust_form_pat, $lnk, $trust_root, $trust_url);
return page_render($form, $current_user, 'Trust This Site');
diff --git a/examples/server/lib/session.php b/examples/server/lib/session.php
index b7544bb..263a64f 100644
--- a/examples/server/lib/session.php
+++ b/examples/server/lib/session.php
@@ -1,6 +1,7 @@
<?php
require_once "config.php";
+require_once "lib/render.php";
require_once "Auth/OpenID/Server.php";
/**
@@ -70,6 +71,7 @@ function writeResponse($resp)
{
list ($headers, $body) = $resp;
array_walk($headers, 'header');
+ header(header_connection_close);
print $body;
}
@@ -80,7 +82,7 @@ function getServer()
{
static $server = null;
if (!isset($server)) {
- $server = new Auth_OpenID_Server(getServerURL(), getOpenIDStore());
+ $server =& new Auth_OpenID_Server(getOpenIDStore());
}
return $server;
}