Zum Inhalt springen

Passwörter neu Verschlüsseln nach Transport von fe_users aus altem (4.2) in neues (6.1) TYPO3

Erstellt am 25. Juni 2014 · 1 Antwort · letzte Antwort am 30. Juni 2014

Tags: Frontend-Benutzer, Update & Upgrade, TYPO3 6.x, Frage

derganzneue ·

Ich habe eine große Tabelle von fe_users aus dem besagten alten System in das neue übertragen. In der alten TYPO3 Version waren die Passwörter noch im Klartext in der Datenbank. Nun wollte ich sie neu verschlüsseln und in das Passwortfeld password zurückschreiben. Dazu habe ich folgenden PHP-Code verwendet:

$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
    'u.uid, u.name, u.password',
    'fe_users u'
);
		
while ($x = $GLOBALS['TYPO3_DB']->sql_fetch_row($res)) {
    $password = $x[2];

    $objSalt = \tx_saltedpasswords_salts_factory::getSaltingInstance(NULL);
    if (is_object($objSalt)) {
    	$saltedPassword = $objSalt->getHashedPassword($password);
    }
	
    $x[3] = $saltedPassword; 
			
    $GLOBALS['TYPO3_DB']->exec_UPDATEquery(
        'fe_users',
        'uid = ' . $x[0],
        array('password' => $x[3])
    );
}

Was für einen einmaligen Vorgang OK sein sollte. Es funktioniert auch soweit, dass er ein neues Passwort erstellt und dann in die Datenbank einträgt.

Das Problem ist jedoch, dass keine der Credentials mehr funktionieren. D.h. man kann sich nicht anmelden. Habe ich etwas vergessen oder nicht beachtet? Oder liegt ein anderes Problem vor?

eddy ·

Hallo derganzneue,

an der selben Stelle hänge ich nun auch. Wenn man sich die SaltFactory.php anschaut, fällt auf, das die besagte Methode getHashedPassword nicht (mehr) vorhanden ist und somit also nicht funktionieren kann.
Habe aber bis jetzt auf die Schnelle auch noch nicht herausfinden können, welche Methoden denn nun zuständig sind bzw ob die SaltFactory noch die richtige Klasse ist. Vielleicht bist Du mittlerweile schon etwas weiter?

Eddy