You are here

public function ConfigForm::buildForm in Apigee Edge 8

Form constructor.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array The form structure.

Overrides ConfigFormBase::buildForm

File

modules/apigee_edge_debug/src/Form/ConfigForm.php, line 78

Class

ConfigForm
Provides a form for changing configuration of the debug module.

Namespace

Drupal\apigee_edge_debug\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $form = parent::buildForm($form, $form_state);
  $config = $this
    ->config('apigee_edge_debug.settings');
  $options = [];
  foreach ($this->pluginManager
    ->getDefinitions() as $id => $definition) {
    $options[$id] = $definition['label'];
  }
  $form['log_message_format'] = [
    '#type' => 'container',
    '#tree' => TRUE,
  ];
  $form['log_message_format']['format'] = [
    '#type' => 'textarea',
    '#title' => $this
      ->t('Log message format'),
    '#description' => $this
      ->t('Note: Adding API responses to log messages by using <em>{response_formatted}</em> token may contain sensitive data (ex.: app credentials, etc.).'),
    '#required' => TRUE,
    '#default_value' => $config
      ->get('log_message_format'),
  ];
  $form['log_message_format']['help'] = [
    '#type' => 'container',
    'tokens' => [
      '#type' => 'details',
      '#title' => $this
        ->t('Available tokens'),
      '#open' => FALSE,
      'token_list' => [
        '#theme' => 'item_list',
        '#items' => [
          '{request_formatted} - Formatted HTTP request by the selected formatter.',
          '{response_formatted} - Formatted HTTP response by the selected formatter.',
          '{stats} - Transfer statistics of the request.',
        ],
      ],
    ],
  ];
  $form['formatter'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('Formatter'),
    '#description' => $this
      ->t('The formatter plugin for the HTTP requests, responses and transfer statistics in log messages.'),
    '#options' => $options,
    '#required' => TRUE,
    '#default_value' => $config
      ->get('formatter'),
  ];
  $form['sanitization'] = [
    '#type' => 'details',
    '#title' => $this
      ->t('Sanitization'),
    '#open' => TRUE,
  ];
  $form['sanitization']['mask_organization'] = [
    '#type' => 'checkbox',
    '#title' => $this
      ->t('Mask organization'),
    '#description' => $this
      ->t('Mask organization name in log entries.'),
    '#default_value' => $config
      ->get('mask_organization'),
  ];
  $form['sanitization']['remove_credentials'] = [
    '#type' => 'checkbox',
    '#title' => $this
      ->t('Remove credentials'),
    '#description' => $this
      ->t('Remove Apigee Edge authentication data from log entries, ex.: authentication header, OAuth client id and secret, access token, refresh token, etc.'),
    '#default_value' => $config
      ->get('remove_credentials'),
  ];
  return $form;
}