Drupal 8 — как создать учетную запись пользователя программно и проверить адрес электронной почты позже

Я разработал пользовательский модуль для создания пользователей, используя модуль бизнес-правил. Это хорошо работает.

$lang = \Drupal::languageManager()->getCurrentLanguage()->getId();
$user = \Drupal\user\Entity\User::create();

// The Basics
$user->setUsername(str_replace('@','',$mail));
$user->setPassword(user_password());
$user->setEmail($mail);
$user->enforceIsNew();
$user->set("init", $mail);
$user->set("langcode", $lang);
$user->set("preferred_langcode", $lang);
$user->set("preferred_admin_langcode", $lang);
$result = $user->save();

После этого я отправляю электронное письмо пользователю со ссылкой для отдыха пользователя. _user_mail_notify('register_no_approval_required', $user);

Когда пользователь нажимает на ссылку, он получает сообщение об ошибке «Отказано в доступе».

Что я должен изменить в коде создания пользователя?

0

Решение

Вы должны включить параметр register_no_approval_required из конфигурации администратора. и вы должны активировать пользователя из кода.

$user->activate();

Для более подробной информации посмотрите на ссылка на сайт

0

Другие решения

Drupal работает странным образом: «активная» учетная запись пользователя не означает, что адрес электронной почты подтвержден. Проверка электронной почты на самом деле является способом входа и установки пароля. Если адрес электронной почты не является «действительным», вы не сможете войти, даже если учетная запись «активна», поскольку вы не получили ссылку для одноразового входа.

Поэтому, если вы программно создаете учетные записи пользователей, вы должны также активировать их.

Если пользователь заблокирован, и он нажимает на ссылку электронной почты, он не становится активным. Он получает сообщение об ошибке «Отказано в доступе».

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector