Hallo liebe Gemeinde,
heute meine erste Frage und ich hoffe, das richtige Forum erwischt zu haben.
Ich verwende diese Erweiterung, um Frontend-Benutzer gegen LDAP zu authentifizieren.
Die Erweiterung habe ich so angepasst, dass sie mit Contao 3.3.5 auch funktioniert.
Die Erweiterung verwendet die Hooks "importUser" und "checkCredentials".
Via "importUser" wird jetzt auch ein neuer User in tl_member angelegt. Das eingegebene Passwort wird, sofern die Authentifzierung gegen LDAP funktioniert, mit \Encryption::hash($strPassword) gehashed und in der Tabelle gespeichert.
Nun zu meinem Problem:
"checkCredentials" wird ja immer dann aufgerufen, wenn das vom User eingegebene Passwort nicht mit dem in der DB gespeicherten PW übereinstimmt.
Nun will ich das neue Passwort (wiederum sofern es "richtig" ist, also die LDAP Authentifizierung klappt) in der Contao-Datenbank aktualisieren.
Leider klappt ein Update des Usereintrags nicht, obwohl ich eine positive Rückmeldung für die MySQL-Query bekomme.
In der Methode die bei checkCredentials aufgerufen wird, frage ich zunächst die ID zum User ab:
Code:
$userid = $this->Database->prepare("SELECT id FROM tl_member WHERE username ='$strUsername'")
->limit(1)
->execute();
// $userid->id liefert das gewünschte Ergebnis
Danach will ich via Update das neue Passwort setzen:
Code:
$result = $this->Database->prepare("UPDATE tl_member SET password=? WHERE id =?")
->execute($hashed_password, $userid->id);
In $result steht, dass nun die Query richtig drin und auch, dass eine Zeile geändert wurde.
Aber in der Datenbank sehe ich, dass sich nichts geändert hat.
Was habe ich übersehen?
Wird während der Anmeldung und dem Aufruf des Hooks irgendwie die Tabelle gelocked, oder mache ich einen offensichtlichen Fehler?
Lesezeichen