Typo3 7: manuelles Frontend-einloggen will nicht funktionieren


August 22, 2016 at 14:31
Typo3

In einer Typo3 7.6.10 Installation musste ich Frontend-User via Ajax manuell einloggen. Das wollte partout nicht funktionieren und beim Betrachten der $GLOBALS['TSFE'] fiel mir auf, dass fe_user->user zwar gesetzt war, dass $GLOBALS['TSFE']->loginUser aber immer wieder zurückgesetzt wurde nach dem neuladen der Seite. Irgendwann war mir das googeln zu blöd und ich hab im Typo3 source das Problem in der initUserGroups in sysext/frontend/Classes/Controller/TypoScriptFrontendController.php gefunden: mein User hatte einfach keine fe_groups zugewiesen (d.h. die Spalte "usergroup" in fe_users war leer). Sobald ich dort eine gültige fe_groups ID eingetragen habe, klappte der manuelle Frontend Login folgendermaßen:
$loginData = array(
    'username' => $username,
    'uident_text' => $password,
    'status' => 'login',
);

$GLOBALS['TSFE']->fe_user->checkPid = 0;
$info = $GLOBALS['TSFE']->fe_user->getAuthInfoArray();
$user = $GLOBALS['TSFE']->fe_user->fetchUserRecord($info['db_user'], $loginData['username']);

//check password etc. 
if ($this->loginSuccessful($user, $password)) {

    $tsfe = $GLOBALS['TSFE'];
    $tsfe->fe_user->createUserSession($user);
    $tsfe->fe_user->setAndSaveSessionData('dummy', TRUE);
    $tsfe->loginUser = 1;
    return json_encode(['status' => 'success']);
}

Tags: ajax fe_login typo3 7


Hinterlasse einen Kommentar:
Salieri
13.03.2017
"manuell" und "ohne Cookies" sind zwei verschiedene Dinge. Es geht nur darum, die fe_user Standardfunktionalität zu umgehen.

Gökce
14.02.2017
Hallo, ich brauche genau diesen Code für meine Typo3 Instanz (7.6.10). Nun will ich einen User manuell einloggen lassen (ohne Cookies). Was muss ich ganz genau tun? Wo schreibe ich diesen PHP Code und wie binde ich ihn ein? Muss ich dafür mein eigenes Login Formular erstellen? Und beim Submit Button deinen PHP Code aufrufen? Wie ich sehe, verzichtet man auf Felogin Extension , bei deiner Lösung. Wenn du sie etwas näher erläutern könntest, wäre ich dir tausendfach dankbar. (das Problem kümmert mich schon seit Tagen) Auf eine detaillierte Anleitung würde ich mich freuen. Gruß Gökce

Suche