class LockrKeyProvider in Lockr 8.3
Same name and namespace in other branches
- 8.4 src/Plugin/KeyProvider/LockrKeyProvider.php \Drupal\lockr\Plugin\KeyProvider\LockrKeyProvider
- 8.2 src/Plugin/KeyProvider/LockrKeyProvider.php \Drupal\lockr\Plugin\KeyProvider\LockrKeyProvider
- 4.x src/Plugin/KeyProvider/LockrKeyProvider.php \Drupal\lockr\Plugin\KeyProvider\LockrKeyProvider
Adds a key provider that allows a key to be stored in Lockr.
Plugin annotation
@KeyProvider(
id = "lockr",
label = "Lockr",
description = @Translation("The Lockr key provider stores the key in Lockr key management service."),
storage_method = "lockr",
key_value = {
"accepted" = TRUE,
"required" = TRUE
}
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\key\Plugin\KeyPluginBase implements KeyPluginInterface
- class \Drupal\key\Plugin\KeyProviderBase implements KeyProviderInterface
- class \Drupal\lockr\Plugin\KeyProvider\LockrKeyProvider implements KeyPluginFormInterface, KeyProviderSettableValueInterface
- class \Drupal\key\Plugin\KeyProviderBase implements KeyProviderInterface
- class \Drupal\key\Plugin\KeyPluginBase implements KeyPluginInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of LockrKeyProvider
File
- src/
Plugin/ KeyProvider/ LockrKeyProvider.php, line 38 - Contains Drupal\lockr\Plugin\KeyProvider\LockrKeyProvider.
Namespace
Drupal\lockr\Plugin\KeyProviderView source
class LockrKeyProvider extends KeyProviderBase implements KeyProviderSettableValueInterface, KeyPluginFormInterface {
/**
* Drupal config factory.
*
* @var ConfigFactoryInterface
*/
protected $configFactory;
/**
* Lockr library client.
*
* @var Lockr
*/
protected $lockr;
/**
* Logger channel.
*
* @var LoggerChannelInterface
*/
protected $logger;
/**
* Constructs a new LockrKeyProvider.
*
* @param array $configuration
* A configuration array containing information about the plugin instance.
* @param string $plugin_id
* The plugin_id for the plugin instance.
* @param mixed $plugin_definition
* The plugin implementation definition.
* @param ConfigFactoryInterface $config_factory
* The simple config factory.
* @param Lockr $lockr
* The Lockr library client.
* @param LoggerChannelInterface $logger
* The lockr Drupal logger channel.
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, ConfigFactoryInterface $config_factory, Lockr $lockr, LoggerChannelInterface $logger) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->configFactory = $config_factory;
$this->lockr = $lockr;
$this->logger = $logger;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static($configuration, $plugin_id, $plugin_definition, $container
->get('config.factory'), $container
->get('lockr.lockr'), $container
->get('logger.channel.lockr'));
}
/**
* {@inheritdoc}
*/
public function defaultConfiguration() {
return [];
}
/**
* {@inheritdoc}
*/
public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
$info = $this->lockr
->getInfo();
if (!$info) {
$form['need_register'] = [
'#prefix' => '<p>',
'#markup' => $this
->t('This site has not yet registered with Lockr, please <a href="@link">click here to register</a>.', [
'@link' => Url::fromRoute('lockr.admin')
->toString(),
]),
'#suffix' => '</p>',
];
}
return $form;
}
/**
* {@inheritdoc}
*/
public function validateConfigurationForm(array &$form, FormStateInterface $form_state) {
}
/**
* {@inheritdoc}
*/
public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
}
/**
* {@inheritdoc}
*/
public function getKeyValue(KeyInterface $key) {
try {
$key_value = $this->lockr
->getSecretValue($key
->id());
} catch (\Exception $e) {
if ($e
->getCode() === 404) {
return $this
->generateKey($key);
}
$this
->logException($e);
return NULL;
}
if (is_null($key_value)) {
return $this
->generateKey($key);
}
return $key_value;
}
/**
* Creates a new key value, returning it.
*/
protected function generateKey(KeyInterface $key) {
$key_type = $key
->getKeyType();
if ($key_type
->getPluginId() === 'lockr_encryption') {
$key_size = (int) $key_type
->getConfiguration()['key_size'];
$new_value = $this->lockr
->generateKey($key_size);
try {
$this
->setKeyValue($key, $new_value);
} catch (\Exception $e) {
$this
->logException($e);
return NULL;
}
return $new_value;
}
return NULL;
}
/**
* Logs exceptions that occur during Lockr requests.
*
* @param \Exception $e
* The exception to log.
*/
protected function logException(\Exception $e) {
$this->logger
->error('Error retrieving value from Lockr [{ex_code}]: {ex_msg}', [
'ex_code' => $e
->getCode(),
'ex_msg' => $e
->getMessage(),
]);
}
/**
* {@inheritdoc}
*/
public function setKeyValue(KeyInterface $key, $key_value) {
$this->lockr
->createSecretValue($key
->id(), $key_value, $key
->label(), $this->configFactory
->get('lockr.settings')
->get('region'));
return TRUE;
}
/**
* {@inheritdoc}
*/
public function deleteKeyValue(KeyInterface $key) {
$this->lockr
->deleteSecretValue($key
->id());
return TRUE;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
KeyPluginBase:: |
public | function |
Calculates dependencies for the configured plugin. Overrides DependentPluginInterface:: |
|
KeyPluginBase:: |
public | function |
Gets this plugin's configuration. Overrides ConfigurableInterface:: |
|
KeyPluginBase:: |
public | function |
Returns the type of plugin. Overrides KeyPluginInterface:: |
|
KeyPluginBase:: |
public | function |
Sets the configuration for this plugin instance. Overrides ConfigurableInterface:: |
|
KeyProviderBase:: |
public static | function |
Obscures a key value. Overrides KeyProviderInterface:: |
1 |
KeyProviderBase:: |
protected static | function | Helper method to obscure a value. | |
KeyProviderBase:: |
public | function |
Allows a key provider to perform actions after a key entity is saved. Overrides KeyProviderInterface:: |
|
LockrKeyProvider:: |
protected | property | Drupal config factory. | |
LockrKeyProvider:: |
protected | property | Lockr library client. | |
LockrKeyProvider:: |
protected | property | Logger channel. | |
LockrKeyProvider:: |
public | function |
Form constructor. Overrides PluginFormInterface:: |
|
LockrKeyProvider:: |
public static | function |
Creates an instance of the plugin. Overrides KeyPluginBase:: |
|
LockrKeyProvider:: |
public | function |
Gets default configuration for this plugin. Overrides KeyPluginBase:: |
|
LockrKeyProvider:: |
public | function |
Deletes the value of a key. Overrides KeyProviderSettableValueInterface:: |
|
LockrKeyProvider:: |
protected | function | Creates a new key value, returning it. | |
LockrKeyProvider:: |
public | function |
Returns the value of a key. Overrides KeyProviderInterface:: |
|
LockrKeyProvider:: |
protected | function | Logs exceptions that occur during Lockr requests. | |
LockrKeyProvider:: |
public | function |
Sets the value of a key. Overrides KeyProviderSettableValueInterface:: |
|
LockrKeyProvider:: |
public | function |
Form submission handler. Overrides PluginFormInterface:: |
|
LockrKeyProvider:: |
public | function |
Form validation handler. Overrides PluginFormInterface:: |
|
LockrKeyProvider:: |
public | function |
Constructs a new LockrKeyProvider. Overrides KeyPluginBase:: |
|
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |