Prince Prince - 2 months ago 16
PHP Question

Change required information to reset user password with Laravel

I am working on a project with Laravel 5.3, I got to a part where for the user to be able to reset his password, the boolean field

confirmed
in the users table must be
1
. For this to work, I edited the method
sendResetLinkEmail
of the file
laravel-project-name\vendor\laravel\framework\src\Illuminate\Foundation\Auth\SendsPasswordResetEmails.php




/**
* Send a reset link to the given user.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*/
public function sendResetLinkEmail(Request $request)
{
$this->validate($request, ['email' => 'required|email']);

/**
* Prevent users who have not confirmed their account from resetting their password
*/
$credentials = ['email' => $request->get('email'), 'confirmed' => 1];

// We will send the password reset link to this user. Once we have attempted
// to send the link, we will examine the response then see the message we
// need to show to the user. Finally, we'll send out a proper response.
$response = $this->broker()->sendResetLink(

$credentials

/**
* Removed because of the added variable $credentials
*/
// $request->only('email')
);

if ($response === Password::RESET_LINK_SENT) {
return back()->with('status', trans($response));
}

// If an error was returned by the password broker, we will get this message
// translated so we can notify a user of the problem. We'll redirect back
// to where the users came from so they can attempt this process again.
return back()->withErrors(
['email' => trans($response)]
);
}





Everything is working correctly as I want but I am wondering. The
vendor directory contains the Composer dependencies
, so is it a good idea to edit the file as I did ?
In case, there is better way to do the same thing, kindly share it. Thanks for helping me.

Answer

you just override the sendResetLinkEmail method in ForgotPasswordController

class ForgotPasswordController extends Controller
{

    use SendsPasswordResetEmails;

    public function sendResetLinkEmail(Request $request)
    {
        // implementation
    }

}