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); } }
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); } } }