You are here

public function MiniorangeOAuthClientCustomerSetup::miniorange_oauth_client_validate_otp_submit in Drupal OAuth & OpenID Connect Login - OAuth2 Client SSO Login 8

File

src/Form/MiniorangeOAuthClientCustomerSetup.php, line 297
Contains \Drupal\miniorange_oauth_client\Form\MiniorangeOAuthClientCustomerSetup.

Class

MiniorangeOAuthClientCustomerSetup

Namespace

Drupal\miniorange_oauth_client\Form

Code

public function miniorange_oauth_client_validate_otp_submit(&$form, $form_state) {
  $otp_token = trim($form['markup_top_vt_start']['miniorange_oauth_client_customer_otp_token']['#value']);
  if ($otp_token == NULL) {
    \Drupal::messenger()
      ->addMessage(t('Please enter OTP first.'), 'error');
    return;
  }
  $username = \Drupal::config('miniorange_oauth_client.settings')
    ->get('miniorange_oauth_client_customer_admin_email');
  $phone = \Drupal::config('miniorange_oauth_client.settings')
    ->get('miniorange_oauth_client_customer_admin_phone');
  $tx_id = \Drupal::config('miniorange_oauth_client.settings')
    ->get('miniorange_oauth_client_tx_id');
  $customer_config = new MiniorangeOAuthClientCustomer($username, $phone, NULL, $otp_token);
  $validate_otp_response = json_decode($customer_config
    ->validateOtp($tx_id));
  if ($validate_otp_response->status == 'SUCCESS') {
    \Drupal::configFactory()
      ->getEditable('miniorange_oauth_client.settings')
      ->clear('miniorange_oauth_client_tx_id')
      ->save();
    $password = \Drupal::config('miniorange_oauth_client.settings')
      ->get('miniorange_oauth_client_customer_admin_password');
    $customer_config = new MiniorangeOAuthClientCustomer($username, $phone, $password, NULL);
    $create_customer_response = json_decode($customer_config
      ->createCustomer());
    if ($create_customer_response->status == 'SUCCESS') {
      $current_status = 'PLUGIN_CONFIGURATION';
      \Drupal::configFactory()
        ->getEditable('miniorange_oauth_client.settings')
        ->set('miniorange_oauth_client_status', $current_status)
        ->save();
      \Drupal::configFactory()
        ->getEditable('miniorange_oauth_client.settings')
        ->set('miniorange_oauth_client_customer_admin_email', $username)
        ->save();
      \Drupal::configFactory()
        ->getEditable('miniorange_oauth_client.settings')
        ->set('miniorange_oauth_client_customer_admin_phone', $phone)
        ->save();
      \Drupal::configFactory()
        ->getEditable('miniorange_oauth_client.settings')
        ->set('miniorange_oauth_client_customer_admin_token', $create_customer_response->token)
        ->save();
      \Drupal::configFactory()
        ->getEditable('miniorange_oauth_client.settings')
        ->set('miniorange_oauth_client_customer_id', $create_customer_response->id)
        ->save();
      \Drupal::configFactory()
        ->getEditable('miniorange_oauth_client.settings')
        ->set('miniorange_oauth_client_customer_api_key', $create_customer_response->apiKey)
        ->save();
      \Drupal::messenger()
        ->addMessage(t('Account created successfully.'));
    }
    else {
      if (trim($create_customer_response->message) == 'Email is not enterprise email.' || $create_customer_response->status == "INVALID_EMAIL_QUICK_EMAIL") {
        \Drupal::messenger()
          ->addMessage(t('There was an error creating an account for you. You may have entered an invalid Email-Id
                        <strong>(We discourage the use of disposable emails) </strong>
                        <br>Please try again with a valid email.'), 'error');
        \Drupal::configFactory()
          ->getEditable('miniorange_oauth_client.settings')
          ->set('miniorange_oauth_client_status', 'CUSTOMER_SETUP')
          ->save();
      }
      else {
        \Drupal::messenger()
          ->addMessage(t('Error in creating an account for you. Please try again.'), 'error');
      }
    }
  }
  else {
    \Drupal::messenger()
      ->addMessage(t('Invalid OTP provided. Please enter the correct OTP'), 'error');
  }
}