Hallo Forum,
ich hab ein Problem mit der feuser Anmeldung bei commerce.
Wenn der Kunde eine Bestellung abschickt wird ein Passwort generiert, welches per Mail an den Kunden geht.
Wenn sich dieser Kunde nun erneut anmelden will, schlägt der Login fehl.
Daraufhin habe ich mal das PW des Kunden im BE verändert und siehe da, der Login geht.
Also ich glaube ja, dass liegt an MD5. Aber warum...
Hab die Ext. kb_md5fepw schon mal drüber installiert. Hat leider auch keine Lösung gebracht.
Ach ja.
T3 4.2.2, YAML, commerce 0.9.8
Hoffe mir kann jemand helfen.
gruss jo
ok, bin ein Stückchen weiter was die Erkenntnisse betrifft...
Wenn ich mir das Passwort des von commerce angelegten Users von einem normalen felogin per Passwort vergessen schicken lasse, dann schickt er mir ein völlig anderes PW als commerce das in der Usermail tut.
kann es sein, dass commerce ein nicht md5 passwort in die mail setzt und dann das richtige in die DB schreibt?
Hallo,
also ich habe das einfach direkt in der class.tx_commerce_pi3.php geändert.
Als Ext. über einen Hook wäre es natürlich besser, aber ich wehre mich einfach dagegen, dass md5 heutzutage nicht standard ist.
Tschaui
wie hastn das gemacht?
Kannst Du mir ein Code Schnipselchen schicken?
Das wäre super. Hab mich echt total fest gefahren...
ich hab's jetzt nicht hier, aber ersetz mal den Teil hier:
$GLOBALS['TYPO3_DB']->exec_INSERTquery('fe_users', $feuData);
$dataArray[$config['userConnection']] = $GLOBALS['TYPO3_DB']->sql_insert_id();
$GLOBALS['TSFE']->fe_user->user['uid'] = $dataArray[$config['userConnection']];
foreach($hookObjectsArr as $hookObj) {
if (method_exists($hookObj, 'postProcessUserData')) {
$hookObj->postProcessUserData($feuData,$this);
}
}
durch den:
$feuMD5Data = array();
$feuMD5Data = $feuData;
$feuMD5Data['password'] = md5($feuData['password']);
$GLOBALS['TYPO3_DB']->exec_INSERTquery('fe_users', $feuMD5Data);
$dataArray[$config['userConnection']] = $GLOBALS['TYPO3_DB']->sql_insert_id();
$GLOBALS['TSFE']->fe_user->user['uid'] = $dataArray[$config['userConnection']];
foreach($hookObjectsArr as $hookObj) {
if (method_exists($hookObj, 'postProcessUserData')) {
$hookObj->postProcessUserData($feuMD5Data,$this);
}
}
Vielen Dank!
Das legt schon mal das PW richtig in die DB.
Aber, jetzt das nächste, daraus resultierende Problem..
In der User Mail wird ja das PW versendet.
Wenn ich Deine Änderungen anwende, dann kommt leider nur der md5 Hash beim User an..
Irgendeine Lösung? Weil md5 kann man ja nicht entschlüsseln..
Für jegliche Antworten wäre ich super dankbar.
Vielen Dank!
Das legt schon mal das PW richtig in die DB.
Aber, jetzt das nächste, daraus resultierende Problem..
In der User Mail wird ja das PW versendet.
Wenn ich Deine Änderungen anwende, dann kommt leider nur der md5 Hash beim User an..
Irgendeine Lösung? Weil md5 kann man ja nicht entschlüsseln..
Für jegliche Antworten wäre ich super dankbar.
Bei mir wird der hash-wert in die db geschrieben und im mail kommt das passwort im klartext an.
Hier nochml der relevante Teil, wie er bei mir funktioniert:
$feuData['password'] = substr(uniqid(rand()), 0, 6);
$feuData['email'] = $this->MYSESSION['billing']['email'];
$feuData['name'] = $this->MYSESSION['billing']['name'].' '.$this->MYSESSION['billing']['surname'];
// Array kopieren und MD5 Hash für FE-User-Passwort erzeugen
$feuMD5Data = array();
$feuMD5Data = $feuData;
$feuMD5Data['password'] = md5($feuData['password']);
/**
* Hook for processing feUserData
* @author Volker Graubaum ( typo3@e-netconsulting.de )
* @since 29.12.2007
*
*/
$hookObjectsArr = array();
if (is_array ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['commerce/pi3/class.tx_commerce_pi3.php']['handleAddress'])) {
foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['commerce/pi3/class.tx_commerce_pi3.php']['handleAddress'] as $classRef) {
$hookObjectsArr[] = &t3lib_div::getUserObj($classRef);
}
}
foreach($hookObjectsArr as $hookObj) {
if (method_exists($hookObj, 'preProcessUserData')) {
$hookObj->preProcessUserData($feuData,$this);
}
}
$GLOBALS['TYPO3_DB']->exec_INSERTquery('fe_users', $feuMD5Data);
$dataArray[$config['userConnection']] = $GLOBALS['TYPO3_DB']->sql_insert_id();
$GLOBALS['TSFE']->fe_user->user['uid'] = $dataArray[$config['userConnection']];
foreach($hookObjectsArr as $hookObj) {
if (method_exists($hookObj, 'postProcessUserData')) {
$hookObj->postProcessUserData($feuMD5Data,$this);
}
}
$this->userData = $feuData;
ICH BIN EIN HIRSCH!
hab in Deiner Zeile 36 anstatt
$this->userData = $feuData;
auch die MD5 Variable übergeben...
Jetzt läuft es auch bei mir..
DANKE nochmal!