示例#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);
         }
     }
 }