protected function FieldEncryptProcessEntities::processValue in Field Encryption 8.2
Encrypt or decrypt a value.
Parameters
\Drupal\Core\Entity\ContentEntityInterface $entity: The entity to process.
\Drupal\Core\Field\FieldItemListInterface $field: The field to process.
int $delta: The field delta.
string $property_name: The name of the property.
\Drupal\encrypt\EncryptionProfileInterface $encryption_profile: The encryption profile to use.
string $value: The value to encrypt / decrypt.
string $op: The operation ("encrypt" or "decrypt").
Return value
string The processed value.
1 call to FieldEncryptProcessEntities::processValue()
- FieldEncryptProcessEntities::processField in src/
FieldEncryptProcessEntities.php - Process a field.
File
- src/
FieldEncryptProcessEntities.php, line 254
Class
- FieldEncryptProcessEntities
- Service class to process entities and fields for encryption.
Namespace
Drupal\field_encryptCode
protected function processValue(ContentEntityInterface $entity, FieldItemListInterface $field, $delta, $property_name, EncryptionProfileInterface $encryption_profile, $value = '', $op = 'encrypt') {
// Do not modify empty strings.
if ($value === '') {
return '';
}
if ($op === 'encrypt') {
if ($this
->allowEncryption($entity, $field
->getName(), $delta, $property_name, $field, $value)) {
// Encrypt property value.
$processed_value = base64_encode($this->encryptService
->encrypt($value, $encryption_profile));
// Save encrypted value in EncryptedFieldValue entity.
$this->encryptedFieldValueManager
->createEncryptedFieldValue($entity, $field
->getName(), $delta, $property_name, $processed_value);
// Return value to store for unencrypted property.
// We can't set this to NULL, because then the field values are not
// saved, so we can't replace them with their unencrypted value on load.
return $this
->getUnencryptedPlaceholderValue($entity, $field, $property_name);
}
else {
// If not allowed, but we still have an EncryptedFieldValue entity,
// remove it.
if ($encrypted_value = $this->encryptedFieldValueManager
->getExistingEntity($entity, $field
->getName(), $delta, $property_name)) {
$this->entityManager
->getStorage('encrypted_field_value')
->delete([
$encrypted_value,
]);
}
return $value;
}
}
elseif ($op === 'decrypt') {
// Get encrypted value from EncryptedFieldValue entity.
if ($encrypted_value = $this->encryptedFieldValueManager
->getEncryptedFieldValue($entity, $field
->getName(), $delta, $property_name)) {
// Decrypt value.
$decrypted_value = $this->encryptService
->decrypt(base64_decode($encrypted_value), $encryption_profile);
return $decrypted_value;
}
else {
return $value;
}
}
}