Aktywne Wpisy

Cinoski +345
Mam odlozone 120k na wklad wlasny, ale bank twierdzi, ze nie mam zdolnosci kredytowej, polecicie cos co zrobi w kilka miesiecy 400% zebym nie musial brac kredytu? #gielda
Skopiuj link
Skopiuj link
Regulamin
Reklama
Kontakt
O nas
FAQ
Osiągnięcia
Ranking
Używam EntityListener, w postLoad robie deszyfrowanie, w prePersist / preUpdate szyfrowanie pola x.
Generalnie działa to dobrze, ale w preUpdate zawartość changeset - x - oldValue jest zaszyfrowana, tak jakby postLoad w ogóle było ominięte, tak ma to działać? Jak robię dump w odpowiednich momentach wszystko jest ok.
Czyli
1) postLoad, x=1
1) dump - pole x jest odszyfrowane - OK
2) zmieniam x=2 - flush i teraz:
- getEntityChangeSet w preUpdate pokazuje oldValue zaszyfrowane (dlaczego nie odszyfrowane po postLoad?), newValue=2
- dump encji pokazuje x=2
3) pole x poprawnie zapisuje się z nową zaszyfrowaną wartością.
Prędzej tu się pewnie sprawdzi customowy typ pola
https://www.doctrine-project.org/projects/doctrine-orm/en/2.8/cookbook/advanced-field-value-conversion-using-custom-mapping-types.html
Trochę z-----i. Dla tego lepiej wpiąć się w preFlush i w nim ogarnąć oba przypadki (o ile nie pojdziesz w strone customoweog pola)
customowe pole średnio mi tu pasuje, musiałbym hakować i robić DI (wstrzyknąć serwis szyfrujący) czego nie powinienem najwyraźniej robić http://emanueleminotto.github.io/blog/service-injection-doctrine-dbal-type
Piszą, że zastosowanie do prostych rzeczy.
if ($oldValueDecrypted == $args->getNewValue('data')) {#czyli wartość się nie zmieniła, próbuję anulować zmianę pola:
subject->setData($args->getOldValue('data));
setField(string $value) {
$this->field = $value;
$this->setFieldEncrypted(null); // trigger change on mapped field so onFlush can update encrypted value