Làm thế nào để gửi quên email qua lập trình?


9

Tôi đã triển khai Decuppling Drupal trong một trong các dự án của mình, một trong những tính năng tôi cần triển khai là một forget passwordtính năng. Vì vậy, tôi đã tạo một tuyến tùy chỉnh để nghe để thiết lập lại mật khẩu yêu cầu.

Tôi biết tôi có thể tạo một URL mật khẩu đặt lại với user_pass_reset_url(); Tôi có thể tạo liên kết này và lập trình đặt email cho người dùng đó, nhưng tôi đang tìm kiếm một dịch vụ hoặc chức năng cốt lõi của Drupal để đạt được công việc này.

Làm thế nào tôi có thể lập trình gửi email mật khẩu đặt lại?


Cách gửi email mật khẩu đặt lại theo chương trình là tạo một mô-đun để thay đổi máy chủ và đường dẫn của URL để nó liên kết với ứng dụng của bạn, sau đó cung cấp một điểm cuối để xử lý việc nhập vào các phần URL đặt lại của người dùng. Không có chức năng cốt lõi cho việc này. Trong Drupal 7, tôi thấy việc chuyển hướng người dùng từ trang web phía sau sang ứng dụng giao diện người dùng dễ dàng hơn sau khi truy cập trang / người dùng
mradcliffe

Câu trả lời:


11

Với một số kỹ thuật đảo ngược trên mô-đun người dùng cốt lõi, giải pháp là:

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

Cảm ơn bạn @Yusef chẳng hạn. Tôi đã tạo mô-đun này cho dự án tự: github.com/ivan-berezhnov/drupal-8-recipes/tree/master/
mẹo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.