forked from GNUsocial/gnu-social
86 lines
2.6 KiB
PHP
86 lines
2.6 KiB
PHP
|
<?php
|
||
|
|
||
|
require_once "common.php";
|
||
|
session_start();
|
||
|
|
||
|
function getOpenIDURL() {
|
||
|
// Render a default page if we got a submission without an openid
|
||
|
// value.
|
||
|
if (empty($_GET['openid_identifier'])) {
|
||
|
$error = "Expected an OpenID URL.";
|
||
|
include 'index.php';
|
||
|
exit(0);
|
||
|
}
|
||
|
|
||
|
return $_GET['openid_identifier'];
|
||
|
}
|
||
|
|
||
|
function run() {
|
||
|
$openid = getOpenIDURL();
|
||
|
$consumer = getConsumer();
|
||
|
|
||
|
// Begin the OpenID authentication process.
|
||
|
$auth_request = $consumer->begin($openid);
|
||
|
|
||
|
// No auth request means we can't begin OpenID.
|
||
|
if (!$auth_request) {
|
||
|
displayError("Authentication error; not a valid OpenID.");
|
||
|
}
|
||
|
|
||
|
$sreg_request = Auth_OpenID_SRegRequest::build(
|
||
|
// Required
|
||
|
array('nickname'),
|
||
|
// Optional
|
||
|
array('fullname', 'email'));
|
||
|
|
||
|
if ($sreg_request) {
|
||
|
$auth_request->addExtension($sreg_request);
|
||
|
}
|
||
|
|
||
|
$policy_uris = null;
|
||
|
if (isset($_GET['policies'])) {
|
||
|
$policy_uris = $_GET['policies'];
|
||
|
}
|
||
|
|
||
|
$pape_request = new Auth_OpenID_PAPE_Request($policy_uris);
|
||
|
if ($pape_request) {
|
||
|
$auth_request->addExtension($pape_request);
|
||
|
}
|
||
|
|
||
|
// Redirect the user to the OpenID server for authentication.
|
||
|
// Store the token for this authentication so we can verify the
|
||
|
// response.
|
||
|
|
||
|
// For OpenID 1, send a redirect. For OpenID 2, use a Javascript
|
||
|
// form to send a POST request to the server.
|
||
|
if ($auth_request->shouldSendRedirect()) {
|
||
|
$redirect_url = $auth_request->redirectURL(getTrustRoot(),
|
||
|
getReturnTo());
|
||
|
|
||
|
// If the redirect URL can't be built, display an error
|
||
|
// message.
|
||
|
if (Auth_OpenID::isFailure($redirect_url)) {
|
||
|
displayError("Could not redirect to server: " . $redirect_url->message);
|
||
|
} else {
|
||
|
// Send redirect.
|
||
|
header("Location: ".$redirect_url);
|
||
|
}
|
||
|
} else {
|
||
|
// Generate form markup and render it.
|
||
|
$form_id = 'openid_message';
|
||
|
$form_html = $auth_request->htmlMarkup(getTrustRoot(), getReturnTo(),
|
||
|
false, array('id' => $form_id));
|
||
|
|
||
|
// Display an error if the form markup couldn't be generated;
|
||
|
// otherwise, render the HTML.
|
||
|
if (Auth_OpenID::isFailure($form_html)) {
|
||
|
displayError("Could not redirect to server: " . $form_html->message);
|
||
|
} else {
|
||
|
print $form_html;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
run();
|
||
|
|
||
|
?>
|