Ver- / Entschlüsselung von Formularfeldern in CakePHP 3
Ich möchte einige Formularfelder verschlüsseln, wenn sie hinzugefügt / bearbeitet und entschlüsselt werden, wenn sie von cake nachgeschlagen werden. Hier ist der Code, der für mich in Version 2.7.2 funktioniert:
core.php
Configure::write('Security.key','secretkey');
app / model / patient.php.
public $encryptedFields = array('patient_surname', 'patient_first_name');
public function beforeSave($options = array()) {
foreach($this->encryptedFields as $fieldName){
if(!empty($this->data[$this->alias][$fieldName])){
$this->data[$this->alias][$fieldName] = Security::encrypt(
$this->data[$this->alias][$fieldName],
Configure::read('Security.key')
);
}
}
return true;
}
public function afterFind($results, $primary = false) {
foreach ($results as $key => $val) {
foreach($this->encryptedFields as $fieldName) {
if (@is_array($results[$key][$this->alias])) {
$results[$key][$this->alias][$fieldName] = Security::decrypt(
$results[$key][$this->alias][$fieldName],
Configure::read('Security.key')
);
}
}
}
return $results;
}
Wie ich es verstanden habe, muss ich $ this-> data [] durch die generierten Entitäten für das Modell und die afterFind-Methode durch virtuelle Felder ersetzen, aber ich kann einfach nicht alles zusammenfassen.