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',
                    '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();
 
 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"/>
     </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>
     <script type="text/javascript">
       var platal_baseurl = "{$globals->baseurl}/";
     </script>
index a602df0..bbdc9af 100644 (file)
@@ -46,6 +46,9 @@
     {$css|smarty:nodefaults} 
     </style> 
     {/foreach} 
     {$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)
     <script type="text/javascript">
     var platal_baseurl = "{$globals->baseurl}/"
     if (window.top != window)