You are here

function miniorange_2fa_form_alter in Google Authenticator / 2 Factor Authentication - 2FA 8

Same name and namespace in other branches
  1. 8.2 miniorange_2fa.module \miniorange_2fa_form_alter()

File

./miniorange_2fa.module, line 16
Module file for miniOrange 2FA Module.

Code

function miniorange_2fa_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
  if ($form_id == 'user_login_block' || $form_id == 'user_login_form' || $form_id == 'user_profile_form') {
    if (MoAuthUtilities::isCustomerRegistered()) {
      $loginSettings = \Drupal::config('miniorange_2fa.settings')
        ->get('mo_auth_enable_two_factor');
      if ($loginSettings && !MoAuthUtilities::check_white_IPs()) {
        \Drupal::service('page_cache_kill_switch')
          ->trigger();
        $only_2nd_factor = \Drupal::config('miniorange_2fa.settings')
          ->get('mo_auth_use_only_2nd_factor');
        $use_pass = \Drupal::config('miniorange_2fa.settings')
          ->get('mo_auth_2fa_use_pass');
        if ($only_2nd_factor and !isset($use_pass)) {
          $output = array_diff_key($form, array_flip((array) [
            'pass',
          ]));
          $output1 = array_diff_key($output, array_flip((array) [
            'actions',
          ]));
          $output2 = array_diff_key($output1, array_flip((array) [
            '#validate',
          ]));
          $form = $output2;
          $form['minorange_login_tfa'] = array(
            '#type' => 'submit',
            '#value' => t('Login with 2nd Factor'),
            '#submit' => array(
              'miniorange_2fa_form_alter_submit',
            ),
            '#prefix' => '<br><br><br>',
          );
        }
        else {
          array_unshift($form['#submit'], 'miniorange_2fa_form_alter_submit');
          \Drupal::configFactory()
            ->getEditable('miniorange_2fa.settings')
            ->clear('mo_auth_2fa_use_pass')
            ->save();
        }
      }
    }
  }
}