function miniorange_2fa_inline_registration::handle_page_two_submit in Google Authenticator / 2 Factor Authentication - 2FA 8
Same name and namespace in other branches
- 8.2 src/Form/miniorange_2fa_inline_registration.php \Drupal\miniorange_2fa\form\miniorange_2fa_inline_registration::handle_page_two_submit()
File
- src/
Form/ miniorange_2fa_inline_registration.php, line 245
Class
Namespace
Drupal\miniorange_2fa\formCode
function handle_page_two_submit(array $form, \Drupal\Core\Form\FormStateInterface $form_state) {
global $base_url;
$storage = $form_state
->getStorage();
$token = $form['mo_auth_verify_token']['#value'];
$challenge_response = $storage[0]['user_challenge_response'];
$validate_response = $this
->validate_otp_for_user($challenge_response->txId, $token);
if ($validate_response->status == 'FAILED') {
$page = [
'page_two' => TRUE,
'page_one_values' => $storage['page_one_values'],
[
'user_search_response' => $storage[0]['user_search_response'],
'user_challenge_response' => $storage[0]['user_challenge_response'],
],
];
$form_state
->setStorage($page);
$_SESSION['success_status'] = FALSE;
$form_state
->setRebuild();
return $form;
}
elseif ($validate_response->status != 'SUCCESS') {
unset($_SESSION['success_status']);
$form_state
->setRebuild();
\Drupal::messenger()
->addMessage(t('An error occured while registering the user.'), 'error', TRUE);
$response = new RedirectResponse($base_url . '/user/login');
$response
->send();
}
$form_state
->setRebuild();
$email = $storage['page_one_values']['mo_auth_user_email'];
$user_search_response = $storage[0]['user_search_response'];
$customer = new MiniorangeCustomerProfile();
$miniorange_user = new MiniorangeUser($customer
->getCustomerID(), $email, NULL, NULL, AuthenticationType::$EMAIL_VERIFICATION['code']);
$user_api_handler = new UsersAPIHandler($customer
->getCustomerID(), $customer
->getAPIKey());
if ($user_search_response->status == 'USER_NOT_FOUND') {
$create_response = $user_api_handler
->create($miniorange_user);
}
/* Check whether user creation limit is exceeded or not */
if ($create_response->status == 'ERROR' && $create_response->message == 'Your user creation limit has been completed. Please upgrade your license to add more users.') {
\Drupal::configFactory()
->getEditable('miniorange_2fa.settings')
->set('mo_user_limit_exceed', TRUE)
->save();
}
else {
\Drupal::configFactory()
->getEditable('miniorange_2fa.settings')
->clear('mo_user_limit_exceed')
->save();
}
if (isset($create_response) && isset($create_response->status) && $create_response->status == 'ERROR') {
unset($_SESSION['success_status']);
$form_state
->setRebuild();
\Drupal::messenger()
->addMessage(t('An error occurred while creating the user. Please contact your administrator.'), 'error');
$response = new RedirectResponse($base_url . '/user/login');
$response
->send();
exit;
}
// Update User Auth method to OUT OF BAND EMAIL
$user_update_response = $user_api_handler
->update($miniorange_user);
if ($user_update_response->status == 'SUCCESS') {
$page = [
'page_three' => TRUE,
'page_two_values' => $form_state
->getValues(),
'page_one_values' => $storage['page_one_values'],
];
$form_state
->setStorage($page);
return;
}
// Handle error. return to login.
}