Bagaimana cara mengirim email lewat lupa secara terprogram?


9

Saya menerapkan Decoupled Drupal di salah satu proyek saya, salah satu fitur yang perlu saya terapkan adalah forget passwordfitur. Jadi saya membuat rute khusus untuk mendengarkan dan mengatur ulang kata sandi yang diminta.

Saya tahu saya bisa membuat ulang kata sandi URL dengan user_pass_reset_url(); Saya dapat membuat tautan ini dan secara terprogram mengatur email ke pengguna itu, tetapi saya mencari layanan atau fungsionalitas inti Drupal untuk mencapai pekerjaan ini.

Bagaimana saya bisa secara program mengirim email kata sandi reset?


Cara untuk mengirim email pengaturan ulang kata sandi secara terprogram adalah membuat modul untuk mengubah host dan jalur URL sehingga itu menautkan ke aplikasi Anda, dan kemudian memberikan titik akhir untuk menangani menelan bagian lulus ulang URL pengguna. Tidak ada fungsi inti untuk ini. Di Drupal 7, saya merasa lebih mudah untuk mengarahkan pengguna dari situs ujung belakang ke aplikasi ujung depan setelah mengunjungi halaman / pengguna
mradcliffe

Jawaban:


11

Dengan beberapa rekayasa terbalik pada modul pengguna inti solusinya adalah:

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

Terima kasih @Yusef misalnya. Saya membuat modul ini untuk proyek mandiri: github.com/ivan-berezhnov/drupal-8-recipes/tree/master/…
Ivan Berezhnov
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.