📄 cardspace.body.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 + -