You are here

public function MiniorangeOAuthClientCustomer::sendOtp in Drupal OAuth & OpenID Connect Login - OAuth2 Client SSO Login 8

Send OTP.

File

src/MiniorangeOAuthClientCustomer.php, line 192
Contains miniOrange Customer class.

Class

MiniorangeOAuthClientCustomer

Namespace

Drupal\miniorange_oauth_client

Code

public function sendOtp() {
  if (!Utilities::isCurlInstalled()) {
    return json_encode(array(
      "status" => 'CURL_ERROR',
      "statusMessage" => '<a href="http://php.net/manual/en/curl.installation.php">PHP cURL extension</a> is not installed or disabled.',
    ));
  }
  $url = MiniorangeOAuthClientConstants::BASE_URL . '/moas/api/auth/challenge';
  $ch = curl_init($url);
  $customer_key = $this->defaultCustomerId;
  $api_key = $this->defaultCustomerApiKey;
  $username = \Drupal::config('miniorange_oauth_client.settings')
    ->get('miniorange_oauth_client_customer_admin_email');

  /* Current time in milliseconds since midnight, January 1, 1970 UTC. */
  $currentTimeInMillis = round(microtime(TRUE) * 1000);

  /* Creating the Hash using SHA-512 algorithm */
  $string_to_hash = $customer_key . number_format($currentTimeInMillis, 0, '', '') . $api_key;
  $hash_value = hash("sha512", $string_to_hash);
  $customer_key_header = "Customer-Key: " . $customer_key;
  $timestamp_header = "Timestamp: " . number_format($currentTimeInMillis, 0, '', '');
  $authorization_header = "Authorization: " . $hash_value;
  $fields = array(
    'customerKey' => $customer_key,
    'email' => $username,
    'authType' => 'EMAIL',
    'transactionName' => 'Drupal ' . Utilities::mo_get_drupal_core_version() . ' OAuth Client Module',
  );
  $field_string = json_encode($fields);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
  curl_setopt($ch, CURLOPT_ENCODING, "");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    $customer_key_header,
    $timestamp_header,
    $authorization_header,
  ));
  curl_setopt($ch, CURLOPT_POST, TRUE);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $field_string);
  $content = curl_exec($ch);
  if (curl_errno($ch)) {
    $error = array(
      '%method' => 'sendOtp',
      '%file' => 'customer_setup.php',
      '%error' => curl_error($ch),
    );
    \Drupal::logger('miniorange_oauth_client')
      ->notice($error);
  }
  curl_close($ch);
  return $content;
}