

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




$plugin.tx_newloginbox.storageUID --> ID des SysFolders mit FE-Benutzern
$plugin.tx_newloginbox.loginUID --> ID der Seite mit dem Plugin newloginbox
BTW: Das Eingabefeld für Kommentare ist definitiv eine Nummer zu klein geraten...
das mit den Constanten hab ich hinbekommen, danke. Nun hab ich noch das Problem das wenn ich mich als neuer Benutzer registrier, ich mich nicht einloggen kann. Wenn ich mir das Passwort über die Email Funktion zuschicken lass, und ein neues Passwort bekomme geht es wieder ;(
ps: gibt es eigentlich irgendwelche xhtml konformen varianten der fe_admin_fe_users.tmpl ?
habe mittlerweile auf diese Extension gewechselt, was konformen code angeht, kommt man hier um welten schneller zum Ziel. Nur leider hab ich nach wie vor noch das Problem mit dem Passwort ;( Folgende Extensions sind installiert, kb_md5fepw 0.4.0 | sr_feuser_register 2.5.0 und die ver ist v4. Vielleicht noch irgend eine Idee wo der Hund begraben sein könnte?
Gruß Thomas
habe mittlerweile auf diese Extension gewechselt, was konformen code angeht, kommt man hier um welten schneller zum Ziel. Nur leider hab ich nach wie vor noch das Problem mit dem Passwort ;( Folgende Extensions sind installiert, kb_md5fepw 0.4.0 | sr_feuser_register 2.5.0 und die ver ist v4. Vielleicht noch irgend eine Idee wo der Hund begraben sein könnte?
Gruß Thomas
ich habe relativ lange mit dem Ansatz gekämpft, bis er jetzt anscheinend endlich läuft. Prüf mal, ob ich auf einen Bug gestossen bin. Ich musste das PHP-Skript ändern:
$res = $GLOBALS['TYPO3_DB']->exec_INSERTquery('tx_kbmd5fepw_challenge', array('challenge' => $chal_val, 'tstamp' => time()));
$content.='<input type="hidden" name="challenge" value="'.$chal_val.'">';
return $content;
Ich glaube der Fehler im Skript war, dass der übergebene Content nicht wieder durchgereicht wurde.
erstmal vielen Dank für das Feedback! Bei mir läuft nun alles bestens, das einzigste was leider immer noch nicht funktioniert ist, wenn der Benutzername ein Umlaut wie z.B. ü, ä ... enthält. Dann ist kein Login möglich.
Add comment