web-dev-qa-db-ja.com

Laravel 5.2)でパスワードリセットリクエストを手動で送信するにはどうすればよいですか。

コントローラ内から特定のユーザー(現在ログインしているユーザーではない)に手動でパスワードリセット要求を送信したいと思います。私はLaravelコードを少し掘り下げましたが、ResetsPasswordspostEmail(Request $request)を呼び出す必要があるようですが、理解できないようです。正しいPasswordControllerインスタンスにアクセスしてそれを呼び出す方法。

12
Daniel Centore

なぜあなたのコントローラーにとってこのようなものではないのですか?

<?php

namespace Illuminate\Foundation\Auth;

use Illuminate\Http\Request;
use Illuminate\Mail\Message;
use Illuminate\Support\Facades\Password;

class YourController extends Controller
{
    public function sendEmail()
    {
        $credentials = ['email' => $email_address];
        $response = Password::sendResetLink($credentials, function (Message $message) {
            $message->subject($this->getEmailSubject());
        });

        switch ($response) {
            case Password::RESET_LINK_SENT:
                return redirect()->back()->with('status', trans($response));
            case Password::INVALID_USER:
                return redirect()->back()->withErrors(['email' => trans($response)]);
        }
    }
}

これをどのように送信するかというコンテキストを実際には説明しないので、適宜調整してください。

19
Jared Eitnier

Laravel 5.5の完全な制御:

    $user = User::where('email', request()->input('email'))->first();
    $token = Password::getRepository()->create($user);

    Mail::send(['text' => 'emails.password'], ['token' => $token], function (Message $message) use ($user) {
        $message->subject(config('app.name') . ' Password Reset Link');
        $message->to($user->email);
    });
12
kjdion84

Mariusz Kurmanのおかげで、私は彼の答えにトークンを追加しただけでした。これはうまくいきます:

$user = User::where('email', request()->input('email'))->first();
$token = Password::getRepository()->create($user);
$user->sendPasswordResetNotification($token);
6
Shayan de

最も簡単な方法:

$user = User::where('email', request()->input('email'))->first();
$user->sendPasswordResetNotification($token);

@ Docの下部

また、電子メールを手動で編集する場合:

php artisan vendor:publish

「11」を選択すると、次のようになります。

/resources/views/vendor/notifications/email.blade.php
0
Mariusz Kurman