Войдите в систему, используя только адрес электронной почты


Я ищу конкретный способ только разрешить вход в систему только с адресом электронной почты в 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
Author: Kevin, 2017-06-29

1 answers

Похоже, Вход только по электронной почте должен решить эту проблему. По крайней мере, стоит посмотреть, как им это удалось.

Этот простой модуль Drupal 8 позволяет пользователям входить в систему исключительно со своим адресом электронной почты из стандартной формы входа.

Настройка:

Просто включите модуль.

Рекомендуемые Модули:

Этот модуль основан на модуле Электронной почты для входа или имени пользователя: https://www.drupal.org/project/login_emailusername

 0
Author: leymannx, 2018-08-09 12:36:46