Итак, у меня есть поля в базе данных в сущности
class Person
{
// other fields
/**
* @var string
*
* @ORM\Column(name="last_name", type="string", length=50, nullable=false)
*/
private $lastName;
/**
* @var string
*
* @ORM\Column(name="first_name", type="string", length=50, nullable=false)
*/
private $firstName;
// getters and setters
}
У меня есть служба под названием SecureEncryptor.В ней есть функции Decrypt () и Encrypt () - в основном вы просто передаете ей зашифрованную / незашифрованную (соответственно) строку, и она сделает следующее.
Проблема в том, что я не уверен, как это использоватьУслуга в сочетании с сущностью - особенно с учетом форм (типов).Я имею в виду, что знаю, что мог бы просто получить поле и вызвать функцию Decrypt, но это не сработало бы с типом, связанным с сущностью Person.
Я начал создавать отдельную сущность для расшифрованного лица, а затем переключал ее, когда приходило время работать с базой данных, но это казалось неправильным.Моя другая идея состояла в том, чтобы позвонить в эту службу из Организации, но я также прочитал, что это неправильно.
Есть идеи?
Редактировать:
Этоэто в основном то, что я хочу сделать:
$builder->get('dateOfBirth')
->addModelTransformer(new CallbackTransformer(
function ($encryptedDOB) {
return $this->encryptor->decrypt($encryptedDOB, salt); // How do I get the salt value here?
},
function ($decryptedDOB) {
return $this->encryptor->encrypt($decryptedDOB, salt); // How do I get the salt value here?
}
));
или, возможно, расшифровать / зашифровать данные ДО этого шага, но не уверен, как это сделать.
РЕДАКТИРОВАТЬ 2:
Я нашел это , которое показывает, что вы можете получить данные сущности в событии PRE_SET_DATA, но вы не можете добавить туда преобразователь данных, поэтому не знаете, как это может работать.