diff options
author | Josh Hoyt <josh@janrain.com> | 2006-02-08 23:37:46 +0000 |
---|---|---|
committer | Josh Hoyt <josh@janrain.com> | 2006-02-08 23:37:46 +0000 |
commit | 1709607f2f560a2218f57bb565b5d43899ab238d (patch) | |
tree | f69e5ad12b37fef13f76e5351bff8fde37bf0af6 /examples/server/lib/common.php | |
parent | 72891e2151d48641dba3c7e54b92f770c940439a (diff) | |
download | php-openid-1709607f2f560a2218f57bb565b5d43899ab238d.zip php-openid-1709607f2f560a2218f57bb565b5d43899ab238d.tar.gz php-openid-1709607f2f560a2218f57bb565b5d43899ab238d.tar.bz2 |
[project @ re-organize the server example and make it prettier]
Diffstat (limited to 'examples/server/lib/common.php')
-rw-r--r-- | examples/server/lib/common.php | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/examples/server/lib/common.php b/examples/server/lib/common.php new file mode 100644 index 0000000..74e16ab --- /dev/null +++ b/examples/server/lib/common.php @@ -0,0 +1,80 @@ +<?php + +require_once "lib/render.php"; +require_once "lib/session.php"; + +require_once "lib/render/login.php"; +require_once "lib/render/about.php"; +require_once "lib/render/trust.php"; + +require_once "Auth/OpenID/Server.php"; +require_once "Auth/OpenID/HMACSHA1.php"; + +function authCancel($info) +{ + if ($info) { + setRequestInfo(); + $url = $info->getCancelURL(); + } else { + $server = getServer(); + $url = $server->server_url; + } + 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) { + // There is no authentication information, so bail + return authCancel(null); + } + + $req_url = $info->getIdentityURL(); + $user = getLoggedInUser(); + setRequestInfo($info); + + if ($req_url != $user) { + return login_render(array(), $req_url, $req_url); + } + + $trust_root = $info->getTrustRoot(); + $trusted = isset($trusted) ? $trusted : isTrusted($trust_root); + if ($trusted) { + setRequestInfo(); + $server = getServer(); + $response = $server->getAuthResponse(&$info, true); + return handleResponse($response, false); + } elseif ($fail_cancels) { + return authCancel($info); + } else { + return trust_render($info); + } +} + +?>
\ No newline at end of file |