diff --git a/config/schema/webform_encrypt.schema.yml b/config/schema/webform_encrypt.schema.yml index 3926fb7..beb0fc2 100644 --- a/config/schema/webform_encrypt.schema.yml +++ b/config/schema/webform_encrypt.schema.yml @@ -1,4 +1,4 @@ -webform.encrypt: +webform_encrypt.settings: type: config_object label: 'Webform encrypt configuration' mapping: @@ -10,12 +10,15 @@ webform.encrypt: type: sequence label: 'Element settings' sequence: - type: mapping - mapping: - encrypt: - type: string - label: 'Encrypt enabled' - encrypt_profile: - type: string - label: 'Encrypt profile' + type: sequence + label: 'Webform ID' + sequence: + type: mapping + mapping: + encrypt: + type: string + label: 'Encrypt enabled' + encrypt_profile: + type: string + label: 'Encrypt profile' diff --git a/src/Element/WebformElementEncrypt.php b/src/Element/WebformElementEncrypt.php index 2ea13f7..9c9712b 100644 --- a/src/Element/WebformElementEncrypt.php +++ b/src/Element/WebformElementEncrypt.php @@ -38,7 +38,8 @@ class WebformElementEncrypt extends FormElement { * Processes element attributes. */ public static function processWebformElementEncrypt(&$element, FormStateInterface $form_state, &$complete_form) { - $config = \Drupal::service('config.factory')->get('webform.encrypt')->get('element.settings'); + $webform_id = $form_state->getFormObject()->getWebform()->id(); + $config = \Drupal::service('config.factory')->get('webform_encrypt.settings')->get("element.settings.$webform_id"); $values = $form_state->getValues(); $field_name = $values['key']; @@ -79,7 +80,8 @@ class WebformElementEncrypt extends FormElement { * Validates element attributes. */ public static function validateWebformElementEncrypt(&$element, FormStateInterface $form_state, &$complete_form) { - $config = \Drupal::service('config.factory')->getEditable('webform.encrypt')->get('element.settings'); + $webform_id = $form_state->getFormObject()->getWebform()->id(); + $config = \Drupal::service('config.factory')->getEditable('webform_encrypt.settings')->get("element.settings.$webform_id"); $values = $form_state->getValues(); $field_name = $values['key']; @@ -88,7 +90,7 @@ class WebformElementEncrypt extends FormElement { 'encrypt_profile' => $values['encrypt_profile'], ); - \Drupal::service('config.factory')->getEditable('webform.encrypt')->set('element.settings', $config)->save(); + \Drupal::service('config.factory')->getEditable('webform_encrypt.settings')->set("element.settings.$webform_id", $config)->save(); } } diff --git a/src/WebformEncryptSubmissionStorage.php b/src/WebformEncryptSubmissionStorage.php index a9571f8..fe0473b 100644 --- a/src/WebformEncryptSubmissionStorage.php +++ b/src/WebformEncryptSubmissionStorage.php @@ -50,7 +50,8 @@ class WebformEncryptSubmissionStorage extends WebformSubmissionStorage { * An array containing the Webform Submission decrypted data. */ protected function getDecryptedData(WebformSubmission $webform_submission, $check_permissions = TRUE) { - $config = \Drupal::service('config.factory')->get('webform.encrypt')->get('element.settings'); + $webform_id = $webform_submission->getWebform()->id(); + $config = \Drupal::service('config.factory')->get('webform_encrypt.settings')->get("element.settings.$webform_id"); $webform = $webform_submission->getWebform(); $elements = $webform->getElementsInitializedFlattenedAndHasValue(); $data = $webform_submission->getData(); diff --git a/webform_encrypt.install b/webform_encrypt.install index 244ad40..38d8354 100644 --- a/webform_encrypt.install +++ b/webform_encrypt.install @@ -15,11 +15,11 @@ function webform_encrypt_uninstall() { ->fields('wsd', array()) ->execute() ->fetchAll(); - $config = \Drupal::service('config.factory')->get('webform.encrypt')->get('element.settings'); + $config = \Drupal::service('config.factory')->get('webform_encrypt.settings')->get("element.settings"); foreach ($submissions as $submission) { - if (isset($config[$submission->name]['encrypt']) && $config[$submission->name]['encrypt']) { - $encryption_profile = \Drupal\encrypt\Entity\EncryptionProfile::load($config[$submission->name]['encrypt_profile']); + if (isset($config[$submission->webform_id][$submission->name]['encrypt']) && $config[$submission->webform_id][$submission->name]['encrypt']) { + $encryption_profile = \Drupal\encrypt\Entity\EncryptionProfile::load($config[$submission->webform_id][$submission->name]['encrypt_profile']); $value = Drupal::service('encryption')->decrypt($submission->value, $encryption_profile); \Drupal::database()->update('webform_submission_data') ->fields(array('value' => $value)) @@ -28,5 +28,5 @@ function webform_encrypt_uninstall() { } } - \Drupal::configFactory()->getEditable('webform.encrypt')->delete(); + \Drupal::configFactory()->getEditable('webform_encrypt.settings')->delete(); } diff --git a/webform_encrypt.module b/webform_encrypt.module index 22c6ee1..307efd8 100644 --- a/webform_encrypt.module +++ b/webform_encrypt.module @@ -44,7 +44,8 @@ function webform_encrypt_form_webform_ui_element_form_alter(&$form, FormStateInt */ function webform_encrypt_entity_presave(EntityInterface $entity) { if ($entity instanceof WebformSubmission) { - $config = \Drupal::service('config.factory')->get('webform.encrypt')->get('element.settings'); + $webform_id = $entity->getWebform()->id(); + $config = \Drupal::service('config.factory')->get('webform_encrypt.settings')->get("element.settings.$webform_id"); $data_original = $entity->getData(); $encryption = Drupal::service('encryption');