Typo3 7: manuelles Frontend-einloggen will nicht funktionieren

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']);
}

2 thoughts on “Typo3 7: manuelles Frontend-einloggen will nicht funktionieren

  1. 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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.