Author: ruchith
Date: Thu Dec 6 18:56:52 2007
New Revision: 10661
Log:
Added the mediawiki module from Sudheera in IDENTITY-149
Added:
trunk/solutions/identity/modules/mediawiki/
trunk/solutions/identity/modules/mediawiki/CardSpace.body.php
trunk/solutions/identity/modules/mediawiki/CardSpace.i18n.php
trunk/solutions/identity/modules/mediawiki/CardSpace.php
trunk/solutions/identity/modules/mediawiki/INSTALL
trunk/solutions/identity/modules/mediawiki/README
trunk/solutions/identity/modules/mediawiki/logo.png (contents, props
changed)
trunk/solutions/identity/modules/mediawiki/logo_big.png (contents, props
changed)
trunk/solutions/identity/modules/mediawiki/logo_small.png (contents, props
changed)
Added: trunk/solutions/identity/modules/mediawiki/CardSpace.body.php
==============================================================================
--- (empty file)
+++ trunk/solutions/identity/modules/mediawiki/CardSpace.body.php Thu Dec
6 18:56:52 2007
@@ -0,0 +1,176 @@
+<?php
+class CardSpace extends SpecialPage
+{
+ function CardSpace() {
+ SpecialPage::SpecialPage("CardSpace");
+ self::loadMessages();
+ }
+
+ function execute($par) {
+ global $wgUser, $wgOut;
+
+ $this->setHeaders();
+
+ switch ($par) {
+ case 'login' :
+ self::loadUser();
+ break;
+ case 'assoc' :
+ self::addAssociation();
+ break;
+ case 'assoc_del' :
+ self::removeAssociation();
+ break;
+ default :
+ $this->checkAnnon();
+ self::manageCards();
+ break;
+ }
+ }
+
+ function checkAnnon()
+ {
+ global $wgUser, $wgOut;
+ if($wgUser->isAnon()) {
+ $wgOut->addWikiText("<div class=\"errorbox\">Please login
first</div>");
+ $wgOut->addHTML('<br />');
+ break;
+ }
+ }
+
+ function loadMessages() {
+ static $messagesLoaded = false;
+ global $wgMessageCache;
+
+ if ($messagesLoaded) return true;
+ $messagesLoaded = true;
+
+ require(dirname(__FILE__) . '/CardSpace.i18n.php');
+ foreach ($allMessages as $lang => $langMessages) {
+ $wgMessageCache->addMessages($langMessages, $lang);
+ }
+
+ return true;
+ }
+
+ function showLogin()
+ {
+ global $wgOut;
+ $wgOut->addHTML('');
+ $wgOut->addHTML('<div id="userloginForm">');
+ $wgOut->addHTML('<form id="cardspace_auth" method="POST"
action="?__mod_cspace_login__=xx&title=Special:CardSpace/login">');
+ $wgOut->addHTML('<h2>CardSpace Login</h2>');
+ $wgOut->addHTML('<OBJECT type="application/x-informationCard"
name="xmlToken">');
+ $wgOut->addHTML('<PARAM Name="tokenType"
Value="urn:oasis:names:tc:SAML:1.0:assertion">');
+ $wgOut->addHTML('<PARAM Name="requiredClaims"
value="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier">');
+ $wgOut->addHTML('</OBJECT>');
+ $wgOut->addHTML('<input type="image" src="' .
"extensions/CardSpace/logo.png" . '" border="0" name="submit" alt="Log in with
CardSpace">');
+ $wgOut->addHTML('</form>');
+ $wgOut->addHTML('</div>');
+ $wgOut->addHTML('<br />');
+ return true;
+ }
+
+ function loadUser()
+ {
+ global $wgOut, $wgUser, $wgAuth;
+ $name = self::getUserFromPPID();
+ if (!$name) {
+ global $wgOut;
+ $wgOut->addWikiText("<div class=\"errorbox\">Error:
Invalid card or card not yet associated with an account</div>");
+ self::showLogin();
+ return;
+ }
+ $u = User::newFromName('root');
+ $u->load();
+ $wgAuth->updateUser($u);
+ $wgUser = $u;
+ $wgOut->addHTML('<b>Login</b>' . $wgUser->getName());
+ }
+
+ function manageCards()
+ {
+ global $wgOut, $wgUser;
+
+ $sql = "SELECT ppid FROM cardspace_assoc WHERE name='" .
$wgUser->getName() . "'";
+ $dbr =& wfGetDB(DB_SLAVE);
+ $res = $dbr->query($sql);
+
+ $wgOut->addHTML('<h3>Associate Card</h3>');
+ $wgOut->addHTML('<b>Card List</b>');
+ $wgOut->addHTML('<table>');
+ $wgOut->addHTML('<tr><td>Card PPID</td><td>Action</td></tr>');
+ while ($row = $dbr->fetchObject($res)) {
+ $wgOut->addHTML("<tr>");
+ $wgOut->addHTML("<td>" . $row->ppid . "</td>");
+ $wgOut->addHTML("<td><a href=\"assoc_del?ppid=" .
urlencode($row->ppid) . "\">Remove</a></td>");
+ $wgOut->addHTML("</tr>");
+ }
+ $wgOut->addHTML("<tr>");
+ $wgOut->addHTML("<td>Associate new card</td><td>");
+ $wgOut->addHTML('<form id="cardspace_auth" method="POST"
action="assoc?__mod_cspace_login__=xx">');
+ $wgOut->addHTML('<OBJECT type="application/x-informationCard"
name="xmlToken">');
+ $wgOut->addHTML('<PARAM Name="tokenType"
Value="urn:oasis:names:tc:SAML:1.0:assertion">');
+ $wgOut->addHTML('<PARAM Name="requiredClaims"
value="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier">');
+ $wgOut->addHTML('</OBJECT>');
+ $wgOut->addHTML('<input type="image" src="' .
"/mwiki/extensions/CardSpace/logo_small.png" . '" border="0" name="submit"
alt="Log in with CardSpace">');
+ $wgOut->addHTML('</form>');
+ $wgOut->addHTML("</td></tr>");
+ $wgOut->addHTML('</table>');
+ }
+
+ function addAssociation()
+ {
+ global $wgOut, $wgUser;
+ $ppid =
$_SERVER['cardspace_http://schemas_xmlsoap_org/ws/2005/05/identity/claims/privatepersonalidentifier'];
+ if ($_SERVER['cardspace_auth_state']!='success' || $ppid == '') {
+ $wgOut->addWikiText("<div class=\"errorbox\">Error:
Invalid Card</div>");
+ $wgOut->addHTML('<br />');
+ self::manageCards();
+ return false;
+ }
+ $name = $wgUser->getName();
+
+ $sql = "INSERT INTO cardspace_assoc VALUES('$ppid', '$name')";
+ $dbr =& wfGetDB(DB_MASTER);
+ $res = $dbr->query($sql);
+ $wgOut->addWikiText("<div class=\"majorwarning\">Card
Associated with this account</div>");
+ $wgOut->addHTML('<br />');
+ self::manageCards();
+ }
+
+ function removeAssociation()
+ {
+ global $wgOut, $wgUser;
+ $name = $wgUser->getName();
+ $ppid = $_REQUEST['ppid'];
+ $sql = "DELETE FROM cardspace_assoc WHERE name='$name' AND
ppid='$ppid'";
+ $dbr =& wfGetDB(DB_MASTER);
+ $res = $dbr->query($sql);
+ $wgOut->addWikiText("<div class=\"majorwarning\">Card
Association removed</div>");
+ $wgOut->addHTML('<br />');
+ self::manageCards();
+ }
+
+ function getUserFromPPID()
+ {
+ global $wgOut;
+
+ if($_SERVER['cardspace_auth_state']=='success') {
+ $ppid =
$_SERVER['cardspace_http://schemas_xmlsoap_org/ws/2005/05/identity/claims/privatepersonalidentifier'];
+
+ $sql = "SELECT name FROM cardspace_assoc WHERE ppid='$ppid'";
+ $dbr =& wfGetDB(DB_SLAVE);
+ $res = $dbr->query($sql);
+ $row = $dbr->fetchObject($res);
+ $dbr->freeResult($res);
+
+ if ($row) {
+ return $row->name;
+ }
+ }
+ return false;
+ }
+}
+?>
+
Added: trunk/solutions/identity/modules/mediawiki/CardSpace.i18n.php
==============================================================================
--- (empty file)
+++ trunk/solutions/identity/modules/mediawiki/CardSpace.i18n.php Thu Dec
6 18:56:52 2007
@@ -0,0 +1,7 @@
+<?php
+$allMessages = array(
+ 'en' => array(
+ 'cardspace' => 'CardSpace'
+ )
+);
+?>
Added: trunk/solutions/identity/modules/mediawiki/CardSpace.php
==============================================================================
--- (empty file)
+++ trunk/solutions/identity/modules/mediawiki/CardSpace.php Thu Dec 6
18:56:52 2007
@@ -0,0 +1,16 @@
+<?php
+# Not a valid entry point, skip unless MEDIAWIKI is defined
+if (!defined('MEDIAWIKI')) {
+ echo <<<EOT
+To install my extension, put the following line in LocalSettings.php:
+require_once( "$IP/extensions/CardSpace/CardSpace.php" );
+EOT;
+ exit( 1 );
+}
+
+$wgAutoloadClasses['CardSpace'] = dirname(__FILE__) . '/CardSpace.body.php';
+$wgSpecialPages['CardSpace'] = 'CardSpace';
+$wgHooks['LoadAllMessages'][] = 'CardSpace::loadMessages';
+
+$wgHooks['UserLoginForm'][] = 'CardSpace::showLogin';
+?>
Added: trunk/solutions/identity/modules/mediawiki/INSTALL
==============================================================================
--- (empty file)
+++ trunk/solutions/identity/modules/mediawiki/INSTALL Thu Dec 6 18:56:52 2007
@@ -0,0 +1,20 @@
+Installation
+------------
+
+Extract the content of the archive (CarsSpace.tar.gz or (CarsSpace.zip), in
this the 'CardSpace' directory in to <MediaWiki_ROOT>/extensions/
+after doing that you should have the directory
<MediaWiki_ROOT>/extensions/CardSpace/
+
+Then add the following line to the LocalSettings.php file in the MediaWiki
root.
+
+ require_once("$IP/extensions/CardSpace/CardSpace.php");
+
+DATABASE
+--------
+
+create the cardsace_assoc table in the MediaWiki Database,
+
+ CREATE TABLE cardspace_assoc (ppid VARCHAR(255) NOT NULL PRIMARY KEY, name
VARCHAR(255) NOT NULL)
+
+
+
+To test the extension, after you logged in go to 'Special Pages' and see
whether 'CardSpace' is list in that page.
Added: trunk/solutions/identity/modules/mediawiki/README
==============================================================================
--- (empty file)
+++ trunk/solutions/identity/modules/mediawiki/README Thu Dec 6 18:56:52 2007
@@ -0,0 +1,8 @@
+CardSpace Extension for MediaWiki
+
+This extension enables CardSpace Authentication for MediaWiki
+
+This extension will handle CardSpace card association with a user name and
+authentication using that username to card (ppid) association.
+
+For installation instruction please reffer the INSTALL file.
Added: trunk/solutions/identity/modules/mediawiki/logo.png
==============================================================================
Binary file. No diff available.
Added: trunk/solutions/identity/modules/mediawiki/logo_big.png
==============================================================================
Binary file. No diff available.
Added: trunk/solutions/identity/modules/mediawiki/logo_small.png
==============================================================================
Binary file. No diff available.
_______________________________________________
Identity-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/identity-dev