FE Userlogin per Code

Um einen User anhand von username und passwort per Code einzuloggen, kann man die Authentisierung auf folgende Weise durchführen:

PHP
$loginData=array(
    'uname' = 'johndoe', //usernmae
    'uident'= 'mypassword', //password
    'status' ='login'
);
$GLOBALS['TSFE']->fe_user-checkPid=0; //do not use a particular pid
$info= $GLOBALS['TSFE']->fe_user->getAuthInfoArray();
$user=$GLOBALS['TSFE']->fe_user->fetchUserRecord(
   $info['db_user'],$loginData['uname']);
$ok=$GLOBALS['TSFE']->fe_user->compareUident($user,$loginData);
if($ok) {
  //login successfull
  $GLOBALS['TSFE']->fe_user->createUserSession($user);
} else {
  //login failed
}
 

von Nikolas Hagelstein

17 Kommentare
#17 Samir schrieb am 06.06.2012 09:17

Mit Typo3 4.7 funktionierte dieses Snippet bei mir nicht. Ich musste es folgendermaßen abändern:

 

private function checkUser($username, $password) {

$check = FALSE;

$loginData = array(

'username' => $username,

'uident_text' => $password,

'status' => 'login',

);

 

$GLOBALS['TSFE']->fe_user->checkPid = ''; //do not use a particular pid

$info = $GLOBALS['TSFE']->fe_user->getAuthInfoArray();

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

 

if (isset($user) && $user != '') {

$authBase = new tx_saltedpasswords_sv1();

$ok = $authBase->compareUident($user, $loginData);

if ($ok) {

//login successfull

$GLOBALS['TSFE']->fe_user->createUserSession($user);

$check = TRUE;

} else {

//login failed

$check = FALSE;

}

} else {

$check = FALSE;

}

return $check;

}

#16 Sridhar schrieb am 16.01.2012 09:30

ohhh... God... you saved my life...

 

its working...

 

i translated your page and found the solution....

thank you very much...

 

Regards,

sridhar

india

#15 Felix Nagel schrieb am 19.05.2011 02:54

Dieses snippet hat letztendlich für mich funkioniert: typo3.toaster-schwerin.de/typo3_english/2007_10/msg00006.html

#13 Chris schrieb am 02.12.2010 18:14

Hallo Steffen,

 

herzlichen Dank für den guten Artikel. Gibt es eine Möglichkeit, diesen Code auch aus einem Scheduler-Skript heraus auszuführen? Hier besteht ja leider kein feUser...

 

Vielen lieeben Dank für eine kurze Nachricht.

#12 Thomas schrieb am 26.11.2010 13:53

Und wie sieht das Ganze aus, wenn eine MD5-Verschlüsselung dazwischen hängt?

Weißt du, wo man den Challenge-Code herbekommt?

#14 Felix Nagel schrieb am 11.05.2011 15:29

Schau dir mal die Funktion checkPassword in der Extension datamintesfeuser an!

#11 Felix Heller schrieb am 22.04.2010 18:03

Mit demselben Problem hatte ich heute auch zu kämpfen. Ich habe es in TYPO3 4.3.3 zum Laufen gebracht, indem ich noch diese Zeilen ergänzt habe:

 

$GLOBALS['TSFE']->fe_user->user = $GLOBALS['TSFE']->fe_user->fetchUserSession();

$GLOBALS['TSFE']->fe_user->fetchGroupData();

 

Vorsicht! fetchUserSession() gibt einen Array zurück, fetchGroupData() irritierenderweise aber einen Integer-Wert.

 

Bei Bedarf musst du auch noch die $GLOBALS['TSFE']->gr_list umschreiben, damit nur die Inhalte angezeigt werden, die der eingeloggte Benutzer sehen darf.

#10 Jonas schrieb am 21.04.2010 12:25

Hallo zusammen,

 

unter TYPO3 4.2 funktionierte der Login mit dem Code super. Leider tut er das jetzt unter 4.3 nicht mehr. Hat jemand eine neue Lösung dafür?

 

Danke und viele Grüße

#9 Uwe schrieb am 04.09.2009 18:27

Hallo zusammen,

 

DANKE für diesen wunderbaren Snippet!

 

Ein paar kleine Tippies habe ich noch gefunden:

 

Bei der Arrayzuweisung => statt =

 

und

 

$GLOBALS['TSFE']->fe_user->checkPid=0;

 

statt

 

$GLOBALS['TSFE']->fe_user-checkPid=0;

 

(Größer-Zeichen vor checkPid=0)

 

Beim "Copy & pasten" bitte auf Zeilenumbruch achten.

 

Vorher liefs bei mir nicht.

 

Viele Grüße

 

Uwe

#8 Tom schrieb am 18.08.2009 11:17

Hallo zusammen,

das scheint genau der Code zu sein, nach dem ich gesucht habe.

Möchte gerne jeden Besucher der nicht schon unter seinem eigenen Benutzernamen angemeldet ist als Gast (in felogin) automatisch anmelden.

Könnt ihr mir netterweise nen Tipp geben wo genau ich den Code einbauen muss?

 

Dank&Gruß

Tom

#6 Nikolas Hagelstein schrieb am 18.03.2009 12:53

Fast perfekt, nicolas mit "k" zwinker.

#7 Steffen schrieb am 19.03.2009 11:36

sollst Du haben zwinker

einen Kommentar schreiben
Typo3