Come inviare e-mail dimenticata e passate programmaticamente?


9

Ho implementato Drupal disaccoppiato in uno dei miei progetti, una delle funzionalità che devo implementare è una forget passwordfunzionalità. Quindi ho creato un percorso personalizzato per ascoltare la reimpostazione della password richiesta.

So di poter creare un URL di reimpostazione della password con user_pass_reset_url(); Posso generare questo link e impostare l'e-mail a livello di utente per quell'utente, ma sto cercando un servizio o funzionalità core di Drupal per raggiungere questo lavoro.

Come posso inviare a livello di codice un'e-mail di reimpostazione della password?


Il modo per inviare un'e-mail di reimpostazione della password a livello di codice è quello di creare un modulo per modificare l'host e il percorso dell'URL in modo che si colleghi alla tua app, quindi fornire un endpoint per gestire l'importazione dell'utente di reimpostare le parti dell'URL di reimpostazione. Non ci sono funzionalità di base per questo. In Drupal 7, ho trovato più semplice reindirizzare l'utente dal sito back-end all'app front-end dopo aver visitato la pagina / user
mradcliffe,

Risposte:


11

Con un po 'di reverse engineering sul modulo utente principale la soluzione è:

    $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);

Grazie @Yusef per esempio. Ho creato questo modulo per il progetto personale: github.com/ivan-berezhnov/drupal-8-recipes/tree/master/…
Ivan Berezhnov
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.