Aktywne Wpisy

kukold +225
Z dzieciństwa pamiętam, że śniadanie i obiad po szkole gotowała mi babcia. Potem pilnowała mnie na zmianę z dziadkiem. Rodzice wracali z pracy około 17-18. Mama robiła kolację, a później zajmowała się sprawami zawodowymi. Ojciec coś dłubał w garażu albo oglądał telewizję. Tak było właściwie od momentu, gdy miałem 3-5 lat, aż do czasu, gdy stałem się samodzielny.
Dziś sam mam dziecko. Opiekujemy się nim z żoną na zmianę praktycznie 24/7. Zbudowaliśmy dość
Dziś sam mam dziecko. Opiekujemy się nim z żoną na zmianę praktycznie 24/7. Zbudowaliśmy dość

PanieAreczku +5





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