プログラムでパスの忘れメールを送信する方法は?


9

私は自分のプロジェクトの1つにDecoupled Drupalを実装しましたforget password。実装する必要がある機能の1つは機能です。そこで、リクエストされたパスワードのリセットをリッスンするカスタムルートを作成しました。

でパスワードのリセットURLを作成できることはわかっていuser_pass_reset_url()ます。このリンクを生成してプログラムでそのユーザーに電子メールを設定できますが、この仕事を達成するためのサービスまたはDrupalコア機能を探しています。

プログラムでパスワードのリセットメールを送信するにはどうすればよいですか?


プログラムでパスワードのリセットメールを送信する方法は、URLのホストとパスを変更するモジュールを作成して、代わりにアプリにリンクするようにしてから、ユーザーパスのリセットURL部分の取り込みを処理するエンドポイントを提供することです。このためのコア機能はありません。Drupal 7では、/ userページにアクセスした後、ユーザーをバックエンドサイトからフロントエンドアプリにリダイレクトする方が簡単
でした

回答:


11

コアユーザーモジュールでのリバースエンジニアリングのソリューションは次のとおりです。

    $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に感謝します。:私は自分のプロジェクトのために、このモジュールを作成しgithub.com/ivan-berezhnov/drupal-8-recipes/tree/master/...
イワンBerezhnov
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.