mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-31 00:59:58 +09:00
17515512: JanRain php-openid library included, normalization fix
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@5137 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
f541dd59b9
commit
658c0e6dbc
219 changed files with 41415 additions and 10 deletions
169
modules/member/php-openid-1.2.3/examples/server/lib/actions.php
Normal file
169
modules/member/php-openid-1.2.3/examples/server/lib/actions.php
Normal file
|
|
@ -0,0 +1,169 @@
|
|||
<?php
|
||||
|
||||
require_once "lib/common.php";
|
||||
require_once "lib/session.php";
|
||||
require_once "lib/render.php";
|
||||
|
||||
require_once "lib/render/login.php";
|
||||
require_once "lib/render/sites.php";
|
||||
|
||||
require_once "Auth/OpenID.php";
|
||||
|
||||
/**
|
||||
* Handle a standard OpenID server request
|
||||
*/
|
||||
function action_default()
|
||||
{
|
||||
$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);
|
||||
$sreg = getSreg($request->identity);
|
||||
if (is_array($sreg)) {
|
||||
foreach ($sreg as $k => $v) {
|
||||
$response->addField('sreg', $k,
|
||||
$v);
|
||||
}
|
||||
}
|
||||
} 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);
|
||||
}
|
||||
|
||||
/**
|
||||
* Log out the currently logged in user
|
||||
*/
|
||||
function action_logout()
|
||||
{
|
||||
setLoggedInUser(null);
|
||||
setRequestInfo(null);
|
||||
return authCancel(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the input values for a login request
|
||||
*/
|
||||
function login_checkInput($input)
|
||||
{
|
||||
$openid_url = false;
|
||||
$errors = array();
|
||||
|
||||
if (!isset($input['openid_url'])) {
|
||||
$errors[] = 'Enter an OpenID URL to continue';
|
||||
}
|
||||
if (!isset($input['password'])) {
|
||||
$errors[] = 'Enter a password to continue';
|
||||
}
|
||||
if (count($errors) == 0) {
|
||||
$openid_url = $input['openid_url'];
|
||||
$openid_url = Auth_OpenID::normalizeUrl($openid_url);
|
||||
$password = $input['password'];
|
||||
if (!checkLogin($openid_url, $password)) {
|
||||
$errors[] = 'The entered password does not match the ' .
|
||||
'entered identity URL.';
|
||||
}
|
||||
}
|
||||
return array($errors, $openid_url);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ask the user whether he wants to trust this site
|
||||
*/
|
||||
function action_trust()
|
||||
{
|
||||
$info = getRequestInfo();
|
||||
$trusted = isset($_POST['trust']);
|
||||
if ($info && isset($_POST['remember'])) {
|
||||
$sites = getSessionSites();
|
||||
$sites[$info->trust_root] = $trusted;
|
||||
setSessionSites($sites);
|
||||
}
|
||||
return doAuth($info, $trusted, true);
|
||||
}
|
||||
|
||||
function action_sites()
|
||||
{
|
||||
$sites = getSessionSites();
|
||||
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||||
if (isset($_POST['forget'])) {
|
||||
$sites = null;
|
||||
setSessionSites($sites);
|
||||
} elseif (isset($_POST['remove'])) {
|
||||
foreach ($_POST as $k => $v) {
|
||||
if (preg_match('/^site[0-9]+$/', $k) && isset($sites[$v])) {
|
||||
unset($sites[$v]);
|
||||
}
|
||||
}
|
||||
setSessionSites($sites);
|
||||
}
|
||||
}
|
||||
return sites_render($sites);
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
<?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 {
|
||||
$url = getServerURL();
|
||||
}
|
||||
return redirect_render($url);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
112
modules/member/php-openid-1.2.3/examples/server/lib/render.php
Normal file
112
modules/member/php-openid-1.2.3/examples/server/lib/render.php
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
<?php
|
||||
|
||||
define('page_template',
|
||||
'<html>
|
||||
<head>
|
||||
<title>%s</title>
|
||||
%s
|
||||
</head>
|
||||
<body>
|
||||
%s
|
||||
<div id="content">
|
||||
<h1>%s</h1>
|
||||
%s
|
||||
</div>
|
||||
</body>
|
||||
</html>');
|
||||
|
||||
define('logged_in_pat', 'You are logged in as %s.');
|
||||
|
||||
/**
|
||||
* HTTP response line contstants
|
||||
*/
|
||||
define('http_bad_request', 'HTTP/1.1 400 Bad Request');
|
||||
define('http_found', 'HTTP/1.1 302 Found');
|
||||
define('http_ok', 'HTTP/1.1 200 OK');
|
||||
define('http_internal_error', 'HTTP/1.1 500 Internal Error');
|
||||
|
||||
/**
|
||||
* HTTP header constants
|
||||
*/
|
||||
define('header_connection_close', 'Connection: close');
|
||||
define('header_content_text', 'Content-Type: text/plain; charset=us-ascii');
|
||||
|
||||
define('redirect_message',
|
||||
'Please wait; you are being redirected to <%s>');
|
||||
|
||||
|
||||
/**
|
||||
* Return a string containing an anchor tag containing the given URL
|
||||
*
|
||||
* The URL does not need to be quoted, but if text is passed in, then
|
||||
* it does.
|
||||
*/
|
||||
function link_render($url, $text=null) {
|
||||
$esc_url = htmlspecialchars($url, ENT_QUOTES);
|
||||
$text = ($text === null) ? $esc_url : $text;
|
||||
return sprintf('<a href="%s">%s</a>', $esc_url, $text);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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);
|
||||
return array($headers, $body);
|
||||
}
|
||||
|
||||
function navigation_render($msg, $items)
|
||||
{
|
||||
$what = link_render(buildURL(), 'PHP OpenID Server');
|
||||
if ($msg) {
|
||||
$what .= ' — ' . $msg;
|
||||
}
|
||||
if ($items) {
|
||||
$s = '<p>' . $what . '</p><ul class="bottom">';
|
||||
foreach ($items as $action => $text) {
|
||||
$url = buildURL($action);
|
||||
$s .= sprintf('<li>%s</li>', link_render($url, $text));
|
||||
}
|
||||
$s .= '</ul>';
|
||||
} else {
|
||||
$s = '<p class="bottom">' . $what . '</p>';
|
||||
}
|
||||
return sprintf('<div class="navigation">%s</div>', $s);
|
||||
}
|
||||
|
||||
/**
|
||||
* Render an HTML page
|
||||
*/
|
||||
function page_render($body, $user, $title, $h1=null, $login=false)
|
||||
{
|
||||
$h1 = $h1 ? $h1 : $title;
|
||||
|
||||
if ($user) {
|
||||
$msg = sprintf(logged_in_pat, link_render($user));
|
||||
$nav = array('logout' => 'Log Out',
|
||||
'sites' => 'Remembered Sites',
|
||||
);
|
||||
$navigation = navigation_render($msg, $nav);
|
||||
} else {
|
||||
if (!$login) {
|
||||
$msg = link_render(buildURL('login'), 'Log In');
|
||||
$navigation = navigation_render($msg, array());
|
||||
} else {
|
||||
$navigation = '';
|
||||
}
|
||||
}
|
||||
|
||||
$style = getStyle();
|
||||
$text = sprintf(page_template, $title, $style, $navigation, $h1, $body);
|
||||
// No special headers here
|
||||
$headers = array();
|
||||
return array($headers, $text);
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
<?php
|
||||
|
||||
require_once "lib/session.php";
|
||||
require_once "lib/render.php";
|
||||
|
||||
define('about_error_template',
|
||||
'<div class="error">
|
||||
An error occurred when processing your request:
|
||||
<br />
|
||||
%s
|
||||
</div>');
|
||||
|
||||
define('about_body',
|
||||
'<p>
|
||||
This is an <a href="http://www.openid.net/">OpenID</a> server
|
||||
endpoint. This server is built on the <a
|
||||
href="http://www.openidenabled.com/openid/libraries/php">JanRain PHP OpenID
|
||||
library</a>. Since OpenID consumer sites will need to directly contact this
|
||||
server, it must be accessible over the Internet (not behind a firewall).
|
||||
</p>
|
||||
<p>
|
||||
To use this server, you will have to set up a URL to use as an identifier.
|
||||
Insert the following markup into the <code><head></code> of the HTML
|
||||
document at that URL:
|
||||
</p>
|
||||
<pre><link rel="openid.server" href="%s" /></pre>
|
||||
<p>
|
||||
Then configure this server so that you can log in with that URL. Once you
|
||||
have configured the server, and marked up your identity URL, you can verify
|
||||
that it is working by using the <a href="http://www.openidenabled.com/"
|
||||
>openidenabled.com</a>
|
||||
<a href="http://www.openidenabled.com/resources/openid-test/checkup">OpenID
|
||||
Checkup tool</a>:
|
||||
<form method="post"
|
||||
action="http://www.openidenabled.com/resources/openid-test/checkup/start">
|
||||
<label for="checkup">OpenID URL:
|
||||
</label><input id="checkup" type="text" name="openid_url" />
|
||||
<input type="submit" value="Check" />
|
||||
</form>
|
||||
</p>
|
||||
');
|
||||
|
||||
/**
|
||||
* Render the about page, potentially with an error message
|
||||
*/
|
||||
function about_render($error=false, $internal=true)
|
||||
{
|
||||
$headers = array();
|
||||
$body = sprintf(about_body, buildURL());
|
||||
if ($error) {
|
||||
$headers[] = $internal ? http_internal_error : http_bad_request;
|
||||
$body .= sprintf(about_error_template, htmlspecialchars($error));
|
||||
}
|
||||
$current_user = getLoggedInUser();
|
||||
return page_render($body, $current_user, 'OpenID Server Endpoint');
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
<?php
|
||||
|
||||
require_once "lib/session.php";
|
||||
require_once "lib/render.php";
|
||||
|
||||
define('login_form_pat',
|
||||
'<div class="form">
|
||||
<p>
|
||||
Enter your identity URL and password into this form to log in to
|
||||
this server. This server must be configured to accept your identity URL.
|
||||
</p>
|
||||
|
||||
<form method="post" action="%s">
|
||||
<table>
|
||||
<tr>
|
||||
<th><label for="openid_url">OpenID URL:</label></th>
|
||||
<td><input type="text" name="openid_url"
|
||||
value="%s" id="openid_url" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><label for="password">Password:</label></th>
|
||||
<td><input type="password" name="password" id="password" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" value="Log in" />
|
||||
<input type="submit" name="cancel" value="Cancel" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
');
|
||||
|
||||
define('login_needed_pat',
|
||||
'You must be logged in as %s to approve this request.');
|
||||
|
||||
function login_render($errors=null, $input=null, $needed=null)
|
||||
{
|
||||
$current_user = getLoggedInUser();
|
||||
if ($input === null) {
|
||||
$input = $current_user;
|
||||
}
|
||||
if ($needed) {
|
||||
$errors[] = sprintf(login_needed_pat, link_render($needed));
|
||||
}
|
||||
|
||||
$esc_input = htmlspecialchars($input, ENT_QUOTES);
|
||||
$login_url = buildURL('login', true);
|
||||
$body = sprintf(login_form_pat, $login_url, $esc_input);
|
||||
if ($errors) {
|
||||
$body = loginError_render($errors) . $body;
|
||||
}
|
||||
return page_render($body, $current_user, 'Log In', null, true);
|
||||
}
|
||||
|
||||
function loginError_render($errors)
|
||||
{
|
||||
$text = '';
|
||||
foreach ($errors as $error) {
|
||||
$text .= sprintf("<li>%s</li>\n", $error);
|
||||
}
|
||||
return sprintf("<ul class=\"error\">\n%s</ul>\n", $text);
|
||||
}
|
||||
?>
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
<?php
|
||||
|
||||
require_once "lib/session.php";
|
||||
|
||||
define('sites_form',
|
||||
'<p>These decisions have been remembered for this session. All decisions
|
||||
will be forgotten when the session ends.</p>
|
||||
<div class="form">
|
||||
<form method="post" action="%s">
|
||||
<table>
|
||||
<tbody>
|
||||
%s
|
||||
</tbody>
|
||||
</table>
|
||||
<input type="submit" name="remove" value="Remove Selected" />
|
||||
<input type="submit" name="refresh" value="Refresh List" />
|
||||
<input type="submit" name="forget" value="Forget All" />
|
||||
</form>
|
||||
</div>
|
||||
');
|
||||
|
||||
define('sites_empty_message',
|
||||
'<p>
|
||||
No sites are remembered for this session. When you authenticate with a site,
|
||||
you can choose to add it to this list by choosing <q>Remember this
|
||||
decision</q>.
|
||||
</p>
|
||||
<p>%s</p>
|
||||
');
|
||||
|
||||
define('sites_row',
|
||||
'<tr>
|
||||
<td><input type="checkbox" name=%s value="%s" id=%s /></td>
|
||||
<td><label for=%s><code>%s</code></label></td>
|
||||
</tr>');
|
||||
|
||||
function siteListRow_render($i, $site)
|
||||
{
|
||||
$esc_site = htmlspecialchars($site, ENT_QUOTES);
|
||||
$id = sprintf('"site%s"', $i);
|
||||
return sprintf(sites_row, $id, $esc_site, $id, $id, $esc_site);
|
||||
}
|
||||
|
||||
function siteList_render($sites)
|
||||
{
|
||||
$trusted_sites = array();
|
||||
$untrusted_sites = array();
|
||||
foreach ($sites as $site => $trusted) {
|
||||
if ($trusted) {
|
||||
$trusted_sites[] = $site;
|
||||
} else {
|
||||
$untrusted_sites[] = $site;
|
||||
}
|
||||
}
|
||||
$rows = '';
|
||||
$i = 0;
|
||||
foreach (array('Trusted Sites' => $trusted_sites,
|
||||
'Untrusted Sites' => $untrusted_sites) as
|
||||
$name => $sites) {
|
||||
if ($sites) {
|
||||
$rows .= '<tr><th colspan="2">'. $name . '</th></tr>';
|
||||
foreach ($sites as $site) {
|
||||
$rows .= siteListRow_render($i, $site);
|
||||
$i += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $rows;
|
||||
}
|
||||
|
||||
function sites_render($sites)
|
||||
{
|
||||
if ($sites) {
|
||||
$rows = siteList_render($sites);
|
||||
$form = sprintf(sites_form, buildURL('sites'), $rows);
|
||||
$body = $pre . $form;
|
||||
} else {
|
||||
$body = sprintf(sites_empty_message, link_render(buildURL(''), 'Return home'));
|
||||
}
|
||||
return page_render($body, getLoggedInUser(), 'Remembered Sites');
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
|
||||
require_once "lib/session.php";
|
||||
require_once "lib/render.php";
|
||||
|
||||
define('trust_form_pat',
|
||||
'<div class="form">
|
||||
<p>Do you wish to confirm your identity URL (<code>%s</code>) with <code>%s</code>?</p>
|
||||
<form method="post" action="%s">
|
||||
<input type="checkbox" name="remember" value="on" id="remember"><label
|
||||
for="remember">Remember this decision</label>
|
||||
<br />
|
||||
<input type="submit" name="trust" value="Confirm" />
|
||||
<input type="submit" value="Do not confirm" />
|
||||
</form>
|
||||
</div>
|
||||
');
|
||||
|
||||
function trust_render($info)
|
||||
{
|
||||
$current_user = getLoggedInUser();
|
||||
$lnk = link_render($current_user);
|
||||
$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');
|
||||
}
|
||||
|
||||
?>
|
||||
205
modules/member/php-openid-1.2.3/examples/server/lib/session.php
Normal file
205
modules/member/php-openid-1.2.3/examples/server/lib/session.php
Normal file
|
|
@ -0,0 +1,205 @@
|
|||
<?php
|
||||
|
||||
require_once "config.php";
|
||||
require_once "lib/render.php";
|
||||
require_once "Auth/OpenID/Server.php";
|
||||
|
||||
/**
|
||||
* Set up the session
|
||||
*/
|
||||
function init()
|
||||
{
|
||||
session_name('openid_server');
|
||||
session_start();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the style markup
|
||||
*/
|
||||
function getStyle()
|
||||
{
|
||||
$parent = rtrim(dirname(getServerURL()), '/');
|
||||
$url = htmlspecialchars($parent . '/openid-server.css', ENT_QUOTES);
|
||||
return sprintf('<link rel="stylesheet" type="text/css" href="%s" />', $url);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the URL of the current script
|
||||
*/
|
||||
function getServerURL()
|
||||
{
|
||||
$path = $_SERVER['SCRIPT_NAME'];
|
||||
$host = $_SERVER['HTTP_HOST'];
|
||||
$port = $_SERVER['SERVER_PORT'];
|
||||
$s = $_SERVER['HTTPS'] ? 's' : '';
|
||||
if (($s && $port == "443") || (!$s && $port == "80")) {
|
||||
$p = '';
|
||||
} else {
|
||||
$p = ':' . $port;
|
||||
}
|
||||
|
||||
return "http$s://$host$p$path";
|
||||
}
|
||||
|
||||
/**
|
||||
* Build a URL to a server action
|
||||
*/
|
||||
function buildURL($action=null, $escaped=true)
|
||||
{
|
||||
$url = getServerURL();
|
||||
if ($action) {
|
||||
$url .= '/' . $action;
|
||||
}
|
||||
return $escaped ? htmlspecialchars($url, ENT_QUOTES) : $url;
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract the current action from the request
|
||||
*/
|
||||
function getAction()
|
||||
{
|
||||
$path_info = @$_SERVER['PATH_INFO'];
|
||||
$action = ($path_info) ? substr($path_info, 1) : '';
|
||||
$function_name = 'action_' . $action;
|
||||
return $function_name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Write the response to the request
|
||||
*/
|
||||
function writeResponse($resp)
|
||||
{
|
||||
list ($headers, $body) = $resp;
|
||||
array_walk($headers, 'header');
|
||||
header(header_connection_close);
|
||||
print $body;
|
||||
}
|
||||
|
||||
/**
|
||||
* Instantiate a new OpenID server object
|
||||
*/
|
||||
function getServer()
|
||||
{
|
||||
static $server = null;
|
||||
if (!isset($server)) {
|
||||
$server =& new Auth_OpenID_Server(getOpenIDStore());
|
||||
}
|
||||
return $server;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return whether the trust root is currently trusted
|
||||
*/
|
||||
function isTrusted($identity_url, $trust_root)
|
||||
{
|
||||
// from config.php
|
||||
global $trusted_sites;
|
||||
|
||||
if ($identity_url != getLoggedInUser()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (in_array($trust_root, $trusted_sites)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$sites = getSessionSites();
|
||||
return isset($sites[$trust_root]) && $sites[$trust_root];
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a hashed form of the user's password
|
||||
*/
|
||||
function hashPassword($password)
|
||||
{
|
||||
return bin2hex(Auth_OpenID_SHA1($password));
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the user's login information
|
||||
*/
|
||||
function checkLogin($openid_url, $password)
|
||||
{
|
||||
// from config.php
|
||||
global $openid_users;
|
||||
$hash = hashPassword($password);
|
||||
|
||||
return isset($openid_users[$openid_url])
|
||||
&& $hash == $openid_users[$openid_url];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the openid_url out of the cookie
|
||||
*
|
||||
* @return mixed $openid_url The URL that was stored in the cookie or
|
||||
* false if there is none present or if the cookie is bad.
|
||||
*/
|
||||
function getLoggedInUser()
|
||||
{
|
||||
return isset($_SESSION['openid_url'])
|
||||
? $_SESSION['openid_url']
|
||||
: false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the openid_url in the cookie
|
||||
*
|
||||
* @param mixed $identity_url The URL to set. If set to null, the
|
||||
* value will be unset.
|
||||
*/
|
||||
function setLoggedInUser($identity_url=null)
|
||||
{
|
||||
if (!isset($identity_url)) {
|
||||
unset($_SESSION['openid_url']);
|
||||
} else {
|
||||
$_SESSION['openid_url'] = $identity_url;
|
||||
}
|
||||
}
|
||||
|
||||
function setSessionSites($sites=null)
|
||||
{
|
||||
if (!isset($sites)) {
|
||||
unset($_SESSION['session_sites']);
|
||||
} else {
|
||||
$_SESSION['session_sites'] = serialize($sites);
|
||||
}
|
||||
}
|
||||
|
||||
function getSessionSites()
|
||||
{
|
||||
return isset($_SESSION['session_sites'])
|
||||
? unserialize($_SESSION['session_sites'])
|
||||
: false;
|
||||
}
|
||||
|
||||
function getRequestInfo()
|
||||
{
|
||||
return isset($_SESSION['request'])
|
||||
? unserialize($_SESSION['request'])
|
||||
: false;
|
||||
}
|
||||
|
||||
function setRequestInfo($info=null)
|
||||
{
|
||||
if (!isset($info)) {
|
||||
unset($_SESSION['request']);
|
||||
} else {
|
||||
$_SESSION['request'] = serialize($info);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function getSreg($identity)
|
||||
{
|
||||
// from config.php
|
||||
global $openid_sreg;
|
||||
|
||||
if (!is_array($openid_sreg)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $openid_sreg[$identity];
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
Loading…
Add table
Add a link
Reference in a new issue