EncryptService.php in Encrypt 8.3
File
src/EncryptService.php
View source
<?php
namespace Drupal\encrypt;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\encrypt\Exception\EncryptionMethodCanNotDecryptException;
use Drupal\encrypt\Exception\EncryptException;
use Drupal\key\KeyRepositoryInterface;
class EncryptService implements EncryptServiceInterface {
protected $encryptManager;
protected $keyRepository;
protected $configFactory;
public function __construct(EncryptionMethodManager $encrypt_manager, KeyRepositoryInterface $key_repository, ConfigFactoryInterface $config_factory = NULL) {
$this->encryptManager = $encrypt_manager;
$this->keyRepository = $key_repository;
$this->configFactory = $config_factory ?: \Drupal::configFactory();
}
public function loadEncryptionMethods($with_deprecated = TRUE) {
$encryption_methods = $this->encryptManager
->getDefinitions();
$allow_deprecated = $this->configFactory
->get('encrypt.settings')
->get('allow_deprecated_plugins');
if (!$allow_deprecated && !$with_deprecated) {
foreach ($encryption_methods as $plugin_id => $definition) {
if ($definition['deprecated']) {
unset($encryption_methods[$plugin_id]);
}
}
}
return $encryption_methods;
}
public function encrypt($text, EncryptionProfileInterface $encryption_profile) {
if ($this
->validate($text, $encryption_profile)) {
$key = $encryption_profile
->getEncryptionKey();
return $encryption_profile
->getEncryptionMethod()
->encrypt($text, $key
->getKeyValue());
}
}
public function decrypt($text, EncryptionProfileInterface $encryption_profile) {
if (!$encryption_profile
->getEncryptionMethod()
->canDecrypt()) {
throw new EncryptionMethodCanNotDecryptException();
}
if ($this
->validate($text, $encryption_profile)) {
$key = $encryption_profile
->getEncryptionKey();
return $encryption_profile
->getEncryptionMethod()
->decrypt($text, $key
->getKeyValue());
}
}
protected function validate($text, EncryptionProfileInterface $encryption_profile) {
$errors = $encryption_profile
->validate($text);
if (!empty($errors)) {
throw new EncryptException(implode('; ', $errors));
}
return TRUE;
}
}