Hallo,
ich möchte einen Autologin für ein Drittsystem vom Contao-Backend aus realisieren.
Dafür brauche ich URL, Benutzername & Passwort für den Account in diesem anderen System. Diese Daten sollen im Contao-Backend eingetragen werden können.
Soweit funktioniert das auch alles, aber nur, wenn ich das Passwortfeld im Backend vom Typ "text" nehme, was ich ein bisschen unschön finde. Ich würde hier gerne ein Feld vom Typ "password" einsetzen, leider scheitert's hierbei an der Entschlüsselung.
Ich brauche das Passwort an einer bestimmten Stelle im Backend wieder im Klartext, um es dann per vom Drittsystemanbieter vorgegebenen Hash-Funktion zu hashen.
Der Teil im dca sieht folgendermaßen aus:
PHP-Code:
$GLOBALS['TL_DCA']['tl_settings']['fields']['pwcPassword'] = array
(
'label' => &$GLOBALS['TL_LANG']['pwcURL']['pwcPassword'],
'inputType' => 'password',
'exclude' => true,
'eval' => array('mandatory' => false, 'rgxp' => 'pwcPassword')
);
Was dann als Wert in der localconfig landet, scheint für mich der Hash+Salts zu sein, zudem sich das Ergebnis immer ändert, auch wenn man das gleiche Passwort eingibt.
Ich habe dann die Angabe encrypt im DCA hinzugefügt, in der Hoffnung, dass das Passwort dann NUR verschlüsselt, nicht gehasht UND verschlüsselt wird, aber das haut auch nicht hin...jedenfalls bekomme ich mit
PHP-Code:
Encryption::decrypt($stored_pw);
nur Murks heraus.
So wie das aussieht, komm ich also mit dem derzeitigen Password-Widget nicht zurande. Im Grunde genommen dürfte man im Widget nur eine Zeile ändern müssen:
PHP-Code:
135 - return \Encryption::hash($varInput);
135 + return \Encryption::encrypt($varInput);
https://github.com/contao/core/blob/...s/Password.php
und jetzt frage ich mich, wie ich das am ehesten anstellen könnte. Ein neues Backend-Widget erstellen mit demselben Inhalt, bis auf diese eine Zeile? Klingt wie Kanonen auf Spatzen. Wie würdet ihr das angehen? Hab ich vielleicht was übersehen?
Lesezeichen