


Dieses Beispiel demonstriert die Möglichkeit der Erstellung einer Loginbox per TypoScript. Diese Loginbox funktioniert mit md5 Passwörtern (ext: kb_md5feuser) und der Extension newloginbox.
# prüfe, ob bereits eingeloggt (ein feuser muß zu einer Gruppe gehören) [usergroup=*] # Abmeldeformular mit Benutzernamen lib.login = COA_INT lib.login { 10 = TEXT 10.wrap = <span id="logoutUName">|</span> 20 = TEXT 20.typolink.parameter = {$plugin.tx_newloginbox.loginUID} 20.typolink.returnLast = url 20.wrap = <form action="|" method="post"> 30 = COA 30 { 5 = TEXT 5.wrap = <input type="submit" id="logout" value="|" /> 10 = TEXT 10.value = <input type="hidden" name="logintype" value="logout" /> 20 = TEXT 20.value = <input type="hidden" name="redirect_url" value="" /> 30 = TEXT 30.value = </form> } } # ansonsten stellen wir ein Anmeldeformular zur Verfügung [else] # wichtig, da wir an den Challenge-Wert von kb_md5feuser nur über ein PHP-Script kommen includeLibs.md5fepw = fileadmin/scripts/md5fepw.php lib.login = COA_INT lib.login { 10 = TEXT 10.typolink.parameter = {$plugin.tx_newloginbox.loginUID} 10.typolink.returnLast = url 10.wrap = <form action="|" method="post" onsubmit="superchallenge_pass(this); return true;"> # form 20 = COA 20 { 10 = TEXT 10.value = Login 10.wrap = <input type="text" name="user" onclick="this.value=''" value="|" /> <br /> 20 = TEXT 20.wrap = <input type="password" name="pass" onclick="this.value=''" value="|" /> 30 = COA 30 { 10 = TEXT 10.value = <input type="hidden" name="logintype" value="login" /> 20 = TEXT 20.value = {$plugin.tx_newloginbox.storageUID} 20.wrap = <input type="hidden" name="pid" value="|" /> # Aufruf des PHP-Scriptes 25 = USER 25.userFunc = user_md5fepw->md5Challenge 30 = TEXT 30.value = <button type="submit"><img src="fileadmin/templates/res/pictures/go.gif" alt="login" /></button> 40 = TEXT 40.value = </form> } } } [usergroup] # Inhalte für Abmeldeformular nach Sprache einbinden (in unserem Beispiel Englisch und Deutsch) [usergroup=*] AND [globalVar = GP:L = {$langUID_EN}] lib.login.10.value = Hello <!--###USERNAME###--> lib.login.30.5.value = press to logout [else] lib.login.10.value = Hallo <!--###USERNAME###--> lib.login.30.5.value = zum abmelden bestätigen [global] # ermöglicht einbinden nur auf spezieller Seite und dessen Unterseiten [PIDinRootline={$siteIntern}] lib.login.if.isTrue = 1 # globale Ermöglichung des Login, falls Konstante auf 1 gesetzt wird [else] lib.login.if.isTrue = {$activateLogin} [global]
Hier das benötigte PHP-Script. Inhalt des PHP-Scriptes (Funktion kopiert von kb_md5feuser und leicht modifiziert)
<?php
class user_md5fepw {
function md5Challenge($content, $conf)
{
$js = '
function superchallenge_pass(form) {
var pass = form.pass.value;
if (pass) {
form.pass.value = MD5(form.user.value + ":" + MD5(pass) + ":" + form.challenge.value);
return true;
} else
return false;
}';
$GLOBALS['TSFE']->JSCode .= $js;
$GLOBALS['TSFE']->additionalHeaderData['tx_kbmd5fepw_newloginbox'] = '<script language="JavaScript" type="text/javascript" src="typo3/md5.js"></script>';
$chal_val = md5(time().getmypid());
$res = $GLOBALS['TYPO3_DB']->exec_INSERTquery('tx_kbmd5fepw_challenge', array('challenge' => $chal_val, 'tstamp' => time()));
return '<input type="hidden" name="challenge" value="'.$chal_val.'">';
}
}
?>
Dieses Snippet wurde von Stefan Galinski eingesendet


Kommentare (27)