Wie kann ich programmgesteuert eine E-Mail mit einem vergessenen Pass senden?

9

Ich habe Decoupled Drupal in einem meiner Projekte implementiert forget password. Eine der Funktionen, die ich implementieren muss, ist eine Funktion. Also habe ich eine benutzerdefinierte Route erstellt, um das angeforderte Zurücksetzen des Passworts abzuhören.

Ich weiß, dass ich eine URL zum Zurücksetzen des Passworts erstellen kann user_pass_reset_url(). Ich kann diesen Link generieren und die E-Mail programmgesteuert für diesen Benutzer festlegen, suche jedoch nach einem Dienst oder einer Drupal-Kernfunktionalität, um diesen Auftrag auszuführen.

Wie kann ich programmgesteuert eine E-Mail zum Zurücksetzen des Passworts senden?

Yusef
quelle
Die Möglichkeit, eine E-Mail zum Zurücksetzen des Kennworts programmgesteuert zu senden, besteht darin, ein Modul zu erstellen, mit dem der Host und der Pfad der URL so geändert werden, dass sie stattdessen mit Ihrer App verknüpft werden, und anschließend einen Endpunkt für die Aufnahme der URL-Teile zum Zurücksetzen des Benutzerpasses bereitzustellen. Hierfür gibt es keine Kernfunktionalität. In Drupal 7 fand ich es einfacher, den Benutzer von der Back-End-Site zur Front-End-App umzuleiten, nachdem
ich

Antworten:

11

Mit etwas Reverse Engineering auf dem Kernbenutzermodul lautet die Lösung:

    $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
quelle
Danke zum Beispiel @Yusef. Ich habe dieses Modul für das Selbstprojekt erstellt: github.com/ivan-berezhnov/drupal-8-recipes/tree/master/…
Ivan Berezhnov