Войдите в систему, используя только адрес электронной почты
Я ищу конкретный способ только разрешить вход в систему только с адресом электронной почты в Drupal 8.
Я видел модули Login Email и Login EmailUsername, но оба по-прежнему позволяют вводить имя пользователя, а также электронную почту.
Я ищу только электронную почту.
До сих пор я придумывал это в промежутке - но что-то не совсем правильно. Хотя я могу вызвать ошибку формы, форма все равно отправляется и вызывается аутентификация. Оно не следует отправлять, если введенное значение не похоже на адрес электронной почты:
/**
* Implements hook_form_FORM_ID_alter().
*/
function mymodule_form_user_login_form_alter(&$form, FormStateInterface $form_state) {
$form['name']['#type'] = 'email';
$form['name']['#title'] = t('Email Address');
$form['name']['#description'] = t('Enter your email address.');
$form['name']['#element_validate'][] = 'mymodule_login_validate_user';
$form['pass']['#description'] = t('Enter the password that accompanies your email address.');
}
/**
* Custom validation handler for the form login.
*
* @param $form
* @param $form_state
* @return bool
*/
function mymodule_login_validate_user(&$element, FormStateInterface $form_state) {
$email_input = $form_state->getValue('name');
if (!\Drupal::service('email.validator')->isValid($email_input)) {
$form_state->setError($element, 'Please enter a valid email address.');
}
}
Я также переопределяю основную службу user.auth
своей собственной - я буду генерировать имена пользователей на основе факторов, касающихся пользователя (получение информации с удаленного AMS).
Есть ли какой-нибудь способ избежать имени пользователя в Drupal 8?
Изменить: Пользователи не могут зарегистрироваться на сайте Drupal, и забытый пароль будет заменен ссылкой на внешнюю систему AMS.
1 answers
Похоже, Вход только по электронной почте должен решить эту проблему. По крайней мере, стоит посмотреть, как им это удалось.
Этот простой модуль Drupal 8 позволяет пользователям входить в систему исключительно со своим адресом электронной почты из стандартной формы входа.
Настройка:
Просто включите модуль.
Рекомендуемые Модули:
Этот модуль основан на модуле Электронной почты для входа или имени пользователя: https://www.drupal.org/project/login_emailusername