summaryrefslogtreecommitdiffstats
path: root/examples/server/lib/common.php
diff options
context:
space:
mode:
authorJosh Hoyt <josh@janrain.com>2006-02-08 23:37:46 +0000
committerJosh Hoyt <josh@janrain.com>2006-02-08 23:37:46 +0000
commit1709607f2f560a2218f57bb565b5d43899ab238d (patch)
treef69e5ad12b37fef13f76e5351bff8fde37bf0af6 /examples/server/lib/common.php
parent72891e2151d48641dba3c7e54b92f770c940439a (diff)
downloadphp-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.php80
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