¿Cómo enviar el correo electrónico olvidar pasar programáticamente?

9

Implementé Drupal desacoplado en uno de mis proyectos, una de las características que necesito implementar es una forget passwordcaracterística. Así que creé una ruta personalizada para escuchar para restablecer la contraseña solicitada.

Sé que puedo crear una URL de restablecimiento de contraseña con user_pass_reset_url(); Puedo generar este enlace y configurar programáticamente el correo electrónico para ese usuario, pero estoy buscando un servicio o la funcionalidad central de Drupal para lograr este trabajo.

¿Cómo puedo enviar programáticamente un correo electrónico de restablecimiento de contraseña?

Yusef
fuente
La forma de enviar un correo electrónico de restablecimiento de contraseña mediante programación es crear un módulo para cambiar el host y la ruta de la URL para que se vincule a su aplicación, y luego proporcionar un punto final para manejar la ingestión de las partes de URL de restablecimiento de paso del usuario. No hay una funcionalidad central para esto. En Drupal 7, me resultó más fácil redirigir al usuario desde el sitio de back-end a la aplicación de front-end después de visitar la página / user
mradcliffe

Respuestas:

11

Con algo de ingeniería inversa en el módulo de usuario central, la solución es:

    $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);
Yusef
fuente
Gracias @Yusef por ejemplo. Creé
Ivan Berezhnov