From 12d4424c4b4af630844f18ccebe2c6eb1a4c2a91 Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Sun, 26 Oct 2008 10:12:18 +0100 Subject: [PATCH] Implement Simple Registration support TODO: determine if date of birth can be given, and if there is a sensible implementation for postcode, country, language and timezone --- modules/openid.php | 23 +++++++---------------- modules/openid/openid.inc.php | 16 +++++++++++++++- templates/openid/no_identifier.tpl | 2 +- templates/openid/trust.tpl | 14 ++++++++++++-- 4 files changed, 35 insertions(+), 20 deletions(-) diff --git a/modules/openid.php b/modules/openid.php index 70dbd8b..e48e4c6 100644 --- a/modules/openid.php +++ b/modules/openid.php @@ -134,10 +134,17 @@ class OpenidModule extends PLModule return; } + // Prepare Simple Registration response fields + require_once 'Auth/OpenID/SReg.php'; + $sreg_request = Auth_OpenID_SRegRequest::fromOpenIDRequest($request); + $sreg_response = Auth_OpenID_SRegResponse::extractResponse($sreg_request, get_sreg_data($user)); + + // Ask the user for confirmation if ($_SERVER['REQUEST_METHOD'] != 'POST') { $page->changeTpl('openid/trust.tpl'); $page->assign('relying_party', $request->trust_root); + $page->assign_by_ref('sreg_data', $sreg_response->data); return; } @@ -147,24 +154,8 @@ class OpenidModule extends PLModule unset($_SESSION['request']); $response =& $request->answer(true, null, $request->identity); - // Answer with some sample Simple Registration data. - // TODO USE REAL USER DATA FROM $user - $sreg_data = array( - 'fullname' => 'Example User', - 'nickname' => 'example', - 'dob' => '1970-01-01', - 'email' => 'invalid@example.com', - 'gender' => 'F', - 'postcode' => '12345', - 'country' => 'ES', - 'language' => 'eu', - 'timezone' => 'America/New_York'); - // Add the simple registration response values to the OpenID // response message. - require_once 'Auth/OpenID/SReg.php'; - $sreg_request = Auth_OpenID_SRegRequest::fromOpenIDRequest($request); - $sreg_response = Auth_OpenID_SRegResponse::extractResponse($sreg_request, $sreg_data); $sreg_response->toMessage($response->fields); } else { // !isset($_POST['trust']) diff --git a/modules/openid/openid.inc.php b/modules/openid/openid.inc.php index 669eccf..5271684 100644 --- a/modules/openid/openid.inc.php +++ b/modules/openid/openid.inc.php @@ -66,7 +66,21 @@ function get_user_xrds_url($user) return $globals->baseurl . '/openid/user_xrds/' . $user->hruid; } - +function get_sreg_data($user) +{ + if (is_null($user)) { + return null; + } + return array('fullname' => $user->fullName(), + 'nickname' => $user->displayName(), + 'dob' => null, + 'email' => $user->bestEmail(), + 'gender' => $user->isFemale() ? 'F' : 'M', + 'postcode' => null, + 'country' => null, + 'language' => null, + 'timezone' => null); +} // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: diff --git a/templates/openid/no_identifier.tpl b/templates/openid/no_identifier.tpl index b82ce2d..c88b8b5 100644 --- a/templates/openid/no_identifier.tpl +++ b/templates/openid/no_identifier.tpl @@ -20,7 +20,7 @@ {* *} {**************************************************************************} -

Erreur lors du traitement de l'identification.

+

Erreur lors du traitement de l'identification OpenId

Cette requête n'a pas pu aboutir car elle ne contient pas d'identifiant.

diff --git a/templates/openid/trust.tpl b/templates/openid/trust.tpl index edd221b..0ac66e4 100644 --- a/templates/openid/trust.tpl +++ b/templates/openid/trust.tpl @@ -20,14 +20,24 @@ {* *} {**************************************************************************} +

Demande d'identification OpenId

Le site {$relying_party} demande à confirmer votre identité.

-

Souhaitez-vous confirmer votre identité ?

+{if $sreg_data neq null} +

Les informations suivantes lui seront transmises :

+ +{/if} + +

Souhaitez-vous confirmer votre identité ?

- +
-- 2.1.4