Как отправить забыть пароль электронной почты программно?

9

Я реализовал Decoupled Drupal в одном из моих проектов, одна из функций, которые мне нужно реализовать, - это forget passwordфункция. Поэтому я создал собственный маршрут для прослушивания запроса на сброс пароля.

Я знаю, что могу создать URL сброса пароля с помощью user_pass_reset_url(); Я могу сгенерировать эту ссылку и программно настроить адрес электронной почты для этого пользователя, но я ищу сервис или основные функции Drupal для достижения этой цели.

Как я могу программно отправить электронное письмо с паролем сброса пароля?

Yuseferi
источник
Способ отправки программного обеспечения по электронной почте с паролем сброса состоит в том, чтобы создать модуль для изменения хоста и пути URL-адреса, чтобы он вместо этого связывался с вашим приложением, а затем предоставить конечную точку для обработки приема частей URL-адреса сброса пропуска пользователя. Для этого нет основной функциональности. В Drupal 7 мне было проще перенаправить пользователя с внутреннего сайта в интерфейсное приложение после посещения страницы / user
mradcliffe

Ответы:

11

С некоторым реверс-инжинирингом основного пользовательского модуля решение:

    $name = \Drupal::request()->get("name");
    $langcode =  \Drupal::languageManager()->getCurrentLanguage()->getId();
    // Try to load by email.
    $users = \Drupal::entityTypeManager()->getStorage('user')->loadByProperties(array('mail' => $name));
    if (empty($users)) {
        // No success, try to load by name.
        $users = \Drupal::entityTypeManager()->getStorage('user')->loadByProperties(array('name' => $name));
    }
    $account = reset($users);
    // Mail one time login URL and instructions using current language.
    $mail = _user_mail_notify('password_reset', $account, $langcode);
Yuseferi
источник
Спасибо @Yusef например. Я создал этот модуль для собственного проекта: github.com/ivan-berezhnov/drupal-8-recipes/tree/master/…
Иван Бережнов