Implement Simple Registration support
authorAymeric Augustin <aymeric.augustin@m4x.org>
Sun, 26 Oct 2008 09:12:18 +0000 (10:12 +0100)
committerAymeric Augustin <aymeric.augustin@m4x.org>
Sun, 26 Oct 2008 09:12:18 +0000 (10:12 +0100)
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
modules/openid/openid.inc.php
templates/openid/no_identifier.tpl
templates/openid/trust.tpl

index 70dbd8b..e48e4c6 100644 (file)
@@ -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'])
index 669eccf..5271684 100644 (file)
@@ -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:
index b82ce2d..c88b8b5 100644 (file)
@@ -20,7 +20,7 @@
 {*                                                                        *}
 {**************************************************************************}
 
-<h1>Erreur lors du traitement de l'identification.</h1>
+<h1>Erreur lors du traitement de l'identification OpenId</h1>
 
 <p>Cette requête n'a pas pu aboutir car elle ne contient pas d'identifiant.</p>
 
index edd221b..0ac66e4 100644 (file)
 {*                                                                        *}
 {**************************************************************************}
 
+<h1>Demande d'identification OpenId</h1>
 
 <p>Le site <strong>{$relying_party}</strong> demande à confirmer votre identité.</p>
 
-<p>Souhaitez-vous confirmer votre identité ?</p>
+{if $sreg_data neq null}
+<p>Les informations suivantes lui seront transmises :</p>
+<ul>
+{foreach from=$sreg_data key=field item=value}
+<li><i>{$field}</i> : {$value}</li>
+{/foreach}
+</ul>
+{/if}
+
+<p><strong>Souhaitez-vous confirmer votre identité ?<strong></p>
 
 <div class="form">
   <form method="post" action="openid/trust">
     <input type="submit" name="trust" value="Confirmer" />
-    <input type="submit" value="Ne pas confirmer" />
+    <input type="submit" value="Annuler" />
   </form>
 </div>