From 5bdfe6b9b0c766a47025da9ff95a952b6d6403a3 Mon Sep 17 00:00:00 2001 From: Christina Date: Wed, 5 Nov 2025 22:51:44 +0000 Subject: [PATCH] Make the sensitive fields selectable --- src/Form/LoggingSettingsForm.php | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/Form/LoggingSettingsForm.php b/src/Form/LoggingSettingsForm.php index f3de946..044e705 100644 --- a/src/Form/LoggingSettingsForm.php +++ b/src/Form/LoggingSettingsForm.php @@ -4,6 +4,7 @@ use Drupal\Core\Form\ConfigFormBase; use Drupal\Core\Form\FormStateInterface; +use Drupal\field\Entity\FieldStorageConfig; /** * Configure UCEAP Logging settings. @@ -30,12 +31,21 @@ protected function getEditableConfigNames() { public function buildForm(array $form, FormStateInterface $form_state) { $config = $this->config('uceap_logging.settings'); + $fields = \Drupal::entityTypeManager() + ->getStorage('field_storage_config') + ->loadMultiple(); + + $field_names = []; + foreach($fields as $field_key => $field_value) { + $field_names[$field_value->getName()] = $field_value->getName(); + } + $form['sensitive_fields'] = [ - '#type' => 'textarea', - '#title' => $this->t('Sensitive Fields'), - '#description' => $this->t('Enter field machine names (one per line) that should have their values masked in entity change logs. When these fields are modified, they will appear in logs with masked values (e.g., ***MASKED***) instead of actual values.'), - '#default_value' => implode("\n", $config->get('sensitive_fields') ?? []), - '#rows' => 10, + '#type' => 'select2', + '#title' => $this->t('Selectable Sensitive Fields'), + '#options' => $field_names, + '#multiple' => TRUE, + '#default_value' => $config->get('sensitive_fields') ?? [], ]; $form['help'] = [ @@ -63,17 +73,10 @@ public function buildForm(array $form, FormStateInterface $form_state) { * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { - // Convert textarea input to array. - $sensitive_fields_raw = $form_state->getValue('sensitive_fields'); - $sensitive_fields = array_filter( - array_map('trim', explode("\n", $sensitive_fields_raw)), - function ($field) { - return !empty($field); - } - ); + $selectable_sensitive_fields_raw = $form_state->getValue('sensitive_fields'); $this->config('uceap_logging.settings') - ->set('sensitive_fields', array_values($sensitive_fields)) + ->set('sensitive_fields', array_values($selectable_sensitive_fields_raw)) ->save(); parent::submitForm($form, $form_state);