Hallo,
ich möchte ein selbst erstelltes Textfeld (für tl_member) in der Datenbank verschlüsselt speichern (und dann an anderer stelle wieder auslesen können, aber das ist hier nicht das Thema).
Feld ist über das DCA angelegt (....system\modules\mein_modul\dca\tl_member.php) und ich habe dort ein onsubmit_callback hinzu gefügt. Die Funktion, die durch den Callback aufgerufen wird soll dann den Text des Feldes mittels MySQLs AES_ENCRYPT verschlüsselt in die DB schreiben.
In einem selbst geschrieben PHP-Script funktioniert das gut, über das Contao-BE wird mir aber der Inhalt des Formularfeldes unverschlüsselt in die DB geschrieben.
Benutze ich das falsche Callback?
Der relevante Code:
PHP-Code:
$GLOBALS['TL_DCA']['tl_member']['fields']['dummy_password'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_member']['dummy_password'],
'exclude' => true,
'search' => true,
'inputType' => 'text',
'eval' => array('feEditable' => false,'feViewable' => true,'feGroup' => 'personal','tl_class' => 'w50','mandatory' => true,'minlength' => 8,'maxlength' => 40,'nospace' => true,'wrap' => 'off'),
'onsubmit_callback' => array
(
array('tl_member', 'encrypPassword')
)
);
//...
class tl_member_mein_modul extends tl_member
{
/**
* Import the member object
*/
public function __construct()
{
parent::__construct();
}
public function encryptPassword(DataContainer $dc)
{
if (!$dc->activeRecord){
return;
}
$this->Database->prepare("UPDATE tl_member SET dummy_password=AES_ENCRYPT(?,'GeheimesPasswort') WHERE id=?")
->execute($dc->activeRecord->dummy_password, $dc->id);
}
Wäre echt toll, wenn mir jemand einen Tip geben könnte.
Vielen Dank!
Lesezeichen