Reputation: 10886
I'm building an API in Laravel 5.3 and I've to change the default response when a password is being reset.
So how would I do this without making changes to the framework. What I want is this:
In my ResetPasswords
trait located here \Illuminate\Foundation\Auth\ResetPasswords
The default response is:
/**
* Get the response for a successful password reset.
*
* @param string $response
* @return \Illuminate\Http\Response
*/
protected function sendResetResponse($response)
{
return redirect($this->redirectPath())
->with('status', trans($response));
}
/**
* Get the response for a failed password reset.
*
* @param \Illuminate\Http\Request
* @param string $response
* @return \Illuminate\Http\Response
*/
protected function sendResetFailedResponse(Request $request, $response)
{
return redirect()->back()
->withInput($request->only('email'))
->withErrors(['email' => trans($response)]);
}
What I want is this:
/**
* Get the response for a successful password reset.
*
* @param string $response
* @return \Illuminate\Http\Response
*/
protected function sendResetResponse($response)
{
return response()->json(['success' => trans($response)]);
}
/**
* Get the response for a failed password reset.
*
* @param \Illuminate\Http\Request
* @param string $response
* @return \Illuminate\Http\Response
*/
protected function sendResetFailedResponse(Request $request, $response)
{
return response()->json(['error' => trans($response)], 401);
}
So how can I accomplish that without making changes to the framework?
Upvotes: 3
Views: 1943
Reputation: 5368
Copy the methods in your second codeblock to your ResetPasswordController. This will override the Trait's methods in the controller using it.
By doing so you are not making changes to the Laravel framework and your changes won't be lost on a next composer install.
Upvotes: 2