You are here

function miniorange_2fa_inline_registration::handle_page_otp_validate_submit in Google Authenticator / 2 Factor Authentication - 2FA 8.2

Same name and namespace in other branches
  1. 8 src/Form/miniorange_2fa_inline_registration.php \Drupal\miniorange_2fa\form\miniorange_2fa_inline_registration::handle_page_otp_validate_submit()

File

src/Form/miniorange_2fa_inline_registration.php, line 1501
Page 1: Select Email address. Page 2: Verify OTP. Page 3: Select Auth Method. Page 4: Configure Auth Method. Page 5: Configure KBA.

Class

miniorange_2fa_inline_registration
@file Page 1: Select Email address. Page 2: Verify OTP. Page 3: Select Auth Method. Page 4: Configure Auth Method. Page 5: Configure KBA.

Namespace

Drupal\miniorange_2fa\form

Code

function handle_page_otp_validate_submit(array $form, FormStateInterface $form_state) {
  $storage = $form_state
    ->getStorage();
  $input = $form_state
    ->getUserInput();
  $otp_code = $input['mo_auth_otpoversms_code'];
  $form_state
    ->setRebuild();
  $challenge_response = $storage[0]['user_challenge_response'];
  $method = $storage['page_three_values']['mo_auth_method'];
  $email = $storage['page_one_values']['mo_auth_user_email'];
  $customer = new MiniorangeCustomerProfile();
  $hardware_token = AuthenticationType::$HARDWARE_TOKEN['code'];
  $auth_api_handler = new AuthenticationAPIHandler($customer
    ->getCustomerID(), $customer
    ->getAPIKey());
  if ($method == $hardware_token) {
    $miniorange_user = new MiniorangeUser($customer
      ->getCustomerID(), $email, NULL, NULL, $hardware_token);
    $validate_response = $auth_api_handler
      ->validate($miniorange_user, null, $otp_code, null);
  }
  else {
    $validate_response = $this
      ->validate_otp_for_user($challenge_response->txId, $otp_code);
  }
  if ($validate_response->status == 'SUCCESS') {
    $page = [
      'page_five' => TRUE,
      'page_otp_validate_values' => $form_state
        ->getValues(),
      'page_four_values' => $storage['page_four_values'],
      'page_three_values' => $storage['page_three_values'],
      'page_two_values' => $storage['page_two_values'],
      'page_one_values' => $storage['page_one_values'],
    ];
    $_SESSION['success_status'] = TRUE;
    $form_state
      ->setStorage($page);
    return;
  }
  elseif ($validate_response->status == 'FAILED') {

    //Retain All the values
    $page = [
      'page_otp_validate' => TRUE,
      'page_four_values' => $storage['page_four_values'],
      [
        'user_challenge_response' => $storage[0]['user_challenge_response'],
      ],
      'page_three_values' => $storage['page_three_values'],
      'page_two_values' => $storage['page_two_values'],
      'page_one_values' => $storage['page_one_values'],
    ];
    $_SESSION['message'] = 'INVALID OTP';
    $_SESSION['success_status'] = FALSE;
    $form_state
      ->setStorage($page);
    $form_state
      ->setRebuild();
    return;
  }
}