function apigee_edge_form_user_register_form_alter in Apigee Edge 8
Implements hook_form_FORM_ID_alter().
File
- ./
apigee_edge.module, line 764 - Copyright 2018 Google Inc.
Code
function apigee_edge_form_user_register_form_alter(&$form, FormStateInterface $form_state, $form_id) {
$validation_functions = [];
// The email field should be always required because it is required on
// Apigee Edge.
$form['account']['mail']['#required'] = TRUE;
// Add the API connection custom validation callback to the beginning of the
// chain apigee_edge_module_implements_alter() ensures that form_alter hook is
// called in the last time.
$validation_functions[] = 'apigee_edge_form_user_form_api_connection_validate';
$userInput = $form_state
->getUserInput();
// Because this form alter is called earlier than the validation callback
// (and the entity validations by user module) we have to use raw
// user input here to check whether this form element should be visible
// next time when the form is displayed on the UI with validation errors.
if (!empty($userInput['mail']) && $form['account']['mail']['#default_value'] !== $userInput['mail']) {
// Only add our extra features to the form if the provided email does not
// belong to a user in Drupal yet. Otherwise let Drupal's build-in
// validation to handle this problem.
$user = user_load_by_mail($userInput['mail']);
if (!$user) {
// Add email custom validation callback to the chain immediately after the
// API connection validation apigee_edge_module_implements_alter() ensures
// that form_alter hook is called in the last time.
$validation_functions[] = 'apigee_edge_form_user_register_form_developer_email_validate';
try {
$developer = Developer::load($userInput['mail']);
$form['developer_exists'] = [
'#type' => 'value',
'#value' => (bool) $developer,
];
if ($developer) {
if ($form['administer_users']['#value']) {
$form['account']['apigee_edge_developer_exists'] = [
'#type' => 'checkbox',
'#title' => t('I understand the provided email address belongs to a developer on Apigee Edge and I confirm user creation'),
'#required' => TRUE,
'#weight' => 0,
];
}
else {
$config = Drupal::config('apigee_edge.developer_settings');
if ($config
->get('verification_action') === DeveloperSettingsForm::VERIFICATION_ACTION_VERIFY_EMAIL) {
$form['account']['apigee_edge_developer_unreceived_mail'] = [
'#type' => 'checkbox',
'#title' => t('I did not get an email. Please send me a new one.'),
'#weight' => 0,
];
}
}
}
} catch (\Exception $exception) {
// Nothing to do here, if there is no connection to Apigee Edge
// Nothing to do here, if there is no connection to Apigee Edge
// interrupt the registration in the
// apigee_edge_form_user_form_api_connection_validate() function.
}
}
}
$form['#validate'] = array_merge($validation_functions, $form['#validate']);
$form['#after_build'][] = 'apigee_edge_form_user_register_form_after_build';
}