Create an openid discovery page for each user
authorAymeric Augustin <aymeric.augustin@m4x.org>
Sat, 25 Oct 2008 11:02:47 +0000 (13:02 +0200)
committerAymeric Augustin <aymeric.augustin@m4x.org>
Sat, 25 Oct 2008 21:37:14 +0000 (23:37 +0200)
core
htdocs/xorg.php
modules/openid.php [new file with mode: 0644]
templates/openid/openid.tpl [new file with mode: 0644]
templates/skin/common.header.tpl
templates/xnet/skin.tpl

diff --git a/core b/core
index 30b4d21..1e9a1d9 160000 (submodule)
--- a/core
+++ b/core
@@ -1 +1 @@
-Subproject commit 30b4d2149c5fa19fccb09a4f6b286b3a52344245
+Subproject commit 1e9a1d9943b72c5ef31f888e6266dc6322504fee
index 1c5b41a..6098a04 100644 (file)
@@ -25,7 +25,7 @@ $platal = new Xorg('auth', 'carnet', 'email', 'events', 'forums',
                    'geoloc', 'lists', 'marketing', 'payment', 'platal',
                    'profile', 'register', 'search', 'stats', 'admin',
                    'newsletter', 'axletter', 'bandeau', 'survey',
-                   'gadgets', 'googleapps', 'poison');
+                   'gadgets', 'googleapps', 'poison', 'openid');
 
 if (!($path = Env::v('n')) || ($path{0} < 'A' || $path{0} > 'Z')) {
     $platal->run();
diff --git a/modules/openid.php b/modules/openid.php
new file mode 100644 (file)
index 0000000..7a8ad83
--- /dev/null
@@ -0,0 +1,66 @@
+<?php
+/***************************************************************************
+ *  Copyright (C) 2003-2008 Polytechnique.org                              *
+ *  http://opensource.polytechnique.org/                                   *
+ *                                                                         *
+ *  This program is free software; you can redistribute it and/or modify   *
+ *  it under the terms of the GNU General Public License as published by   *
+ *  the Free Software Foundation; either version 2 of the License, or      *
+ *  (at your option) any later version.                                    *
+ *                                                                         *
+ *  This program is distributed in the hope that it will be useful,        *
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of         *
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
+ *  GNU General Public License for more details.                           *
+ *                                                                         *
+ *  You should have received a copy of the GNU General Public License      *
+ *  along with this program; if not, write to the Free Software            *
+ *  Foundation, Inc.,                                                      *
+ *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
+ ***************************************************************************/
+
+
+
+class OpenidModule extends PLModule
+{
+    function handlers()
+    {
+        return array(
+            'openid'    => $this->make_hook('openid', AUTH_PUBLIC),
+        );
+    }
+
+    function handler_openid(&$page, $x = null)
+    {
+        // Determines the user whose openid we are going to display
+        if (is_null($x)) {
+            return PL_NOT_FOUND;
+        }
+
+        $login = S::logged() ? User::get($x) : User::getSilent($x);
+        if (!$login) {
+            return PL_NOT_FOUND;
+        }
+
+        // Select template
+        $page->changeTpl('openid/openid.tpl');
+
+        // Sets the title of the html page.
+        $page->setTitle($login->fullName());
+
+        // Sets the <link> tags for HTML-Based Discovery
+        $page->addLink('openid.server openid2.provider',
+                       $globals->baseurl . '/openid');
+        $page->addLink('openid.delegate openid2.local_id',
+                       $login->hruid);
+
+        // Adds the global user property array to the display.
+        $page->assign_by_ref('user', $login);
+
+
+    }
+
+}
+
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+?>
diff --git a/templates/openid/openid.tpl b/templates/openid/openid.tpl
new file mode 100644 (file)
index 0000000..acb96d4
--- /dev/null
@@ -0,0 +1,30 @@
+{**************************************************************************}
+{*                                                                        *}
+{*  Copyright (C) 2003-2008 Polytechnique.org                             *}
+{*  http://opensource.polytechnique.org/                                  *}
+{*                                                                        *}
+{*  This program is free software; you can redistribute it and/or modify  *}
+{*  it under the terms of the GNU General Public License as published by  *}
+{*  the Free Software Foundation; either version 2 of the License, or     *}
+{*  (at your option) any later version.                                   *}
+{*                                                                        *}
+{*  This program is distributed in the hope that it will be useful,       *}
+{*  but WITHOUT ANY WARRANTY; without even the implied warranty of        *}
+{*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *}
+{*  GNU General Public License for more details.                          *}
+{*                                                                        *}
+{*  You should have received a copy of the GNU General Public License     *}
+{*  along with this program; if not, write to the Free Software           *}
+{*  Foundation, Inc.,                                                     *}
+{*  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA               *}
+{*                                                                        *}
+{**************************************************************************}
+
+<h1>Page d'identité OpenId de {$user->fullName()}</h1>
+
+
+<p>OpenID est un système d'authentification décentralisé. Cette page permet 
+à des sites web tiers d'identifier {$user->displayName()}, grâce à son compte 
+Polytechnique.org.<p>
+
+<p><a href="Xorg/OpenId">En savoir plus sur OpenId</a></p>
\ No newline at end of file
index 568297d..6e0abeb 100644 (file)
@@ -50,6 +50,9 @@
     </style>
     {/foreach}
     <link rel="stylesheet" type="text/css" href="css/print.css" media="print"/>
+    {foreach from=$pl_link item=link}
+    <link rel="{$link.rel}" href="{$link.href}" />
+    {/foreach}
     <script type="text/javascript">
       var platal_baseurl = "{$globals->baseurl}/";
     </script>
index a602df0..bbdc9af 100644 (file)
@@ -46,6 +46,9 @@
     {$css|smarty:nodefaults} 
     </style> 
     {/foreach} 
+    {foreach from=$pl_link item=link}
+    <link rel="{$link.rel}" href="{$link.href}" />
+    {/foreach}
     <script type="text/javascript">
     var platal_baseurl = "{$globals->baseurl}/"
     if (window.top != window)