From 24cfa984cc0d84c3b636891f792e3e50559fb42b Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Sat, 25 Oct 2008 13:02:47 +0200 Subject: [PATCH] Create an openid discovery page for each user --- core | 2 +- htdocs/xorg.php | 2 +- modules/openid.php | 66 ++++++++++++++++++++++++++++++++++++++++ templates/openid/openid.tpl | 30 ++++++++++++++++++ templates/skin/common.header.tpl | 3 ++ templates/xnet/skin.tpl | 3 ++ 6 files changed, 104 insertions(+), 2 deletions(-) create mode 100644 modules/openid.php create mode 100644 templates/openid/openid.tpl diff --git a/core b/core index 30b4d21..1e9a1d9 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit 30b4d2149c5fa19fccb09a4f6b286b3a52344245 +Subproject commit 1e9a1d9943b72c5ef31f888e6266dc6322504fee diff --git a/htdocs/xorg.php b/htdocs/xorg.php index 1c5b41a..6098a04 100644 --- a/htdocs/xorg.php +++ b/htdocs/xorg.php @@ -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 index 0000000..7a8ad83 --- /dev/null +++ b/modules/openid.php @@ -0,0 +1,66 @@ + $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 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 index 0000000..acb96d4 --- /dev/null +++ b/templates/openid/openid.tpl @@ -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 *} +{* *} +{**************************************************************************} + +

Page d'identité OpenId de {$user->fullName()}

+ + +

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.

+ +

En savoir plus sur OpenId

\ No newline at end of file diff --git a/templates/skin/common.header.tpl b/templates/skin/common.header.tpl index 568297d..6e0abeb 100644 --- a/templates/skin/common.header.tpl +++ b/templates/skin/common.header.tpl @@ -50,6 +50,9 @@ {/foreach} + {foreach from=$pl_link item=link} + + {/foreach} diff --git a/templates/xnet/skin.tpl b/templates/xnet/skin.tpl index a602df0..bbdc9af 100644 --- a/templates/xnet/skin.tpl +++ b/templates/xnet/skin.tpl @@ -46,6 +46,9 @@ {$css|smarty:nodefaults} {/foreach} + {foreach from=$pl_link item=link} + + {/foreach}