如何在Laravel 5.2中手动发送密码重置请求?

Dan*_*ore 10 php email passwords laravel

我想从控制器中手动向特定用户(不是当前登录的用户)发送密码重置请求.我在Laravel代码中进行了一些挖掘,似乎我应该调用postEmail(Request $request)ResetsPasswords,但我似乎无法弄清楚如何访问正确的PasswordController实例来调用它.

小智 18

感谢 Mariusz Kurman,我只在他的回答中添加了标记。这工作得很好:

$user = User::where('email', request()->input('email'))->first();
$token = Password::getRepository()->create($user);
$user->sendPasswordResetNotification($token);
Run Code Online (Sandbox Code Playgroud)


Jar*_*ier 16

为什么不是这样的控制器:

<?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)]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

你没有真正解释你想如何发送它的背景,所以相应地调整.


kjd*_*n84 10

完全控制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);
    });
Run Code Online (Sandbox Code Playgroud)