Example #1
0
 protected function blockCipherFields(AbstractChangeEventArgs $eventArgs)
 {
     $metadata = $eventArgs->getMetadata();
     $cryptMetadata = $metadata->getCrypt();
     if (!isset($cryptMetadata) || !isset($cryptMetadata['blockCipher'])) {
         return;
     }
     $document = $eventArgs->getDocument();
     $changeSet = $eventArgs->getChangeSet();
     foreach ($cryptMetadata['blockCipher'] as $field => $setting) {
         if ($this->hasChanged($field, $changeSet)) {
             $service = $this->serviceLocator->get($setting['service']);
             if (!$service instanceof BlockCipherServiceInterface) {
                 throw new \Zoop\Shard\Exception\InvalidArgumentException();
             }
             $service->encryptField($field, $document, $metadata);
             $eventArgs->addRecompute($field);
         }
     }
 }
Example #2
0
 public function validate(AbstractChangeEventArgs $eventArgs)
 {
     $document = $eventArgs->getDocument();
     $documentValidator = $this->getDocumentValidator();
     $result = $documentValidator->isValid($document, $eventArgs->getMetadata(), $eventArgs->getChangeSet());
     if (!$result->getValue()) {
         // Raise INVALID_MODEL
         $eventArgs->getEventManager()->dispatchEvent(Events::INVALID_MODEL, new EventArgs($document, $result));
         $eventArgs->setReject(true);
     }
 }
Example #3
0
 protected function recompute($document, AbstractChangeEventArgs $eventArgs, $documentManager)
 {
     $unitOfWork = $documentManager->getUnitOfWork();
     $changeSet = $eventArgs->getChangeSet();
     $metadata = $eventArgs->getMetadata();
     foreach ($eventArgs->getRecompute() as $field) {
         if ($changeSet->hasField($field)) {
             $oldValue = $changeSet->getField($field)[0];
         } else {
             $oldValue = null;
         }
         $unitOfWork->propertyChanged($document, $field, $oldValue, $metadata->getFieldValue($document, $field));
     }
 }