Symfony / Doctrine - Слушатель - Шифрование / Дешифрование - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть слушатель для шифрования и дешифрования.Шифрование:

public function prePersist(LifecycleEventArgs $args)
{
    $entity = $args->getEntity();


    if ($entity instanceof Customer) {
        $entity->setEmail($this->encryption->encrypt($entity->getEmail()));
        $entity->setPhone($this->encryption->encrypt($entity->getPhone()));
    } elseif ($entity instanceof Address) {
        $entity->setFirstName($this->encryption->encrypt($entity->getFirstName()));
        $entity->setLastName($this->encryption->encrypt($entity->getLastName()));
        $entity->setCompanyName($this->encryption->encrypt($entity->getCompanyName()));
        $entity->setStreet($this->encryption->encrypt($entity->getStreet()));
        $entity->setCity($this->encryption->encrypt($entity->getCity()));
    }

    return;
}

public function postLoad(LifecycleEventArgs $args)
{
    $entity = $args->getEntity();


    if ($entity instanceof Customer) {
        $entity->setEmail($this->encryption->decrypt($entity->getEmail()));
        $entity->setPhone($this->encryption->decrypt($entity->getPhone()));
    } elseif ($entity instanceof Address) {
        $entity->setFirstName($this->encryption->decrypt($entity->getFirstName()));
        $entity->setLastName($this->encryption->decrypt($entity->getLastName()));
        $entity->setCompanyName($this->encryption->decrypt($entity->getCompanyName()));
        $entity->setStreet($this->encryption->decrypt($entity->getStreet()));
        $entity->setCity($this->encryption->decrypt($entity->getCity()));
    }

    return;
}

Проблема с расшифровкой.Как изменить данные о загрузке, не сохраняя их в базе данных?Сейчас он обновляет зашифрованные данные с расшифрованной загрузкой.

Спасибо

1 Ответ

0 голосов
/ 25 апреля 2018

Ваша проблема в том, что вы не должны использовать событие prePersist, поскольку это событие вызывается только при добавлении объекта в эту базу данных, но не при его обновлении.

В списке Doctrineсобытия жизненного цикла здесь , вы можете видеть, что вы хотите использовать событие preUpdate, чтобы при каждом изменении оно снова шифровалось перед сохранением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...