Я пытаюсь сохранить зашифрованные данные в своей базе данных d8 и расшифровать их, чтобы отобразить их авторизованным пользователям:
use \Defuse\Crypto\Key;
use \Defuse\Crypto\Crypto;
function my_module_node_load($nodes) {
$key = loadEncryptionKeyFromConfig();
$title = $nodes[1]->getTitle(); // $title is "def369u8765"
$decrypted_title = Crypto::decrypt($title, $key); //$decrypted_title is 'a test note'
$nodes[1]->setTitle($decrypted_title);
$nodes[1]->getTitle(); // returns 'a test note'
return $nodes;
}
Когда он действительно отображается на моей странице, это все еще зашифрованная версия. В базе данных node_field_revision по-прежнему показывает зашифрованную версию, а отметка времени не изменилась со вчерашнего дня.
Что я делаю неправильно? как мне вернуть расшифрованную версию?
Я НЕ хочу расшифровывать его в своей базе данных. Он должен оставаться зашифрованным на диске.
РЕДАКТИРОВАТЬ: я добавил $nodes[1]->save(); и это (как и ожидалось) вошло в бесконечный цикл, потому что node_load вызывается как часть процесса save().
РЕДАКТИРОВАТЬ: я знаю, что я не должен жестко кодировать [1]! Как только я отсортирую этот узел, я зациклю его на всех nid в $nodes.