⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cardspace.body.php

📁 开源的OpenId的一个java实现
💻 PHP
字号:
<?phpclass 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;        }}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -