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

Reply via email to