Created
May 20, 2016 02:45
-
-
Save imjohnbon/a04c3428ae8abf0a68753e25a73e3969 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace App; | |
use Illuminate\Http\Request; | |
use Illuminate\Mail\Message; | |
use Illuminate\Support\Facades\Password; | |
trait ResetsPasswords | |
{ | |
/** | |
* Send a reset link to the given user. | |
* | |
* @param \Illuminate\Http\Request $request | |
* @return \Illuminate\Http\Response | |
*/ | |
public function postEmail(Request $request) | |
{ | |
return $this->sendResetLinkEmail($request); | |
} | |
/** | |
* Send a reset link to the given user. | |
* | |
* @param \Illuminate\Http\Request $request | |
* @return \Illuminate\Http\Response | |
*/ | |
public function sendResetLinkEmail(Request $request) | |
{ | |
$this->validate($request, ['email' => 'required|email']); | |
$broker = $this->getBroker(); | |
$response = Password::broker($broker)->sendResetLink($request->only('email'), function (Message $message) { | |
$message->subject($this->getEmailSubject()); | |
}); | |
switch ($response) { | |
case Password::RESET_LINK_SENT: | |
return $this->getSendResetLinkEmailSuccessResponse($response); | |
case Password::INVALID_USER: | |
default: | |
return $this->getSendResetLinkEmailFailureResponse($response); | |
} | |
} | |
/** | |
* Get the e-mail subject line to be used for the reset link email. | |
* | |
* @return string | |
*/ | |
protected function getEmailSubject() | |
{ | |
return property_exists($this, 'subject') ? $this->subject : 'Your Password Reset Link'; | |
} | |
/** | |
* Get the response for after the reset link has been successfully sent. | |
* | |
* @param string $response | |
* @return \Symfony\Component\HttpFoundation\Response | |
*/ | |
protected function getSendResetLinkEmailSuccessResponse($response) | |
{ | |
return response()->json(['success' => true]); | |
} | |
/** | |
* Get the response for after the reset link could not be sent. | |
* | |
* @param string $response | |
* @return \Symfony\Component\HttpFoundation\Response | |
*/ | |
protected function getSendResetLinkEmailFailureResponse($response) | |
{ | |
return response()->json(['success' => false]); | |
} | |
/** | |
* Reset the given user's password. | |
* | |
* @param \Illuminate\Http\Request $request | |
* @return \Illuminate\Http\Response | |
*/ | |
public function postReset(Request $request) | |
{ | |
return $this->reset($request); | |
} | |
/** | |
* Reset the given user's password. | |
* | |
* @param \Illuminate\Http\Request $request | |
* @return \Illuminate\Http\Response | |
*/ | |
public function reset(Request $request) | |
{ | |
$this->validate($request, $this->getResetValidationRules()); | |
$credentials = $request->only( | |
'email', 'password', 'password_confirmation', 'token' | |
); | |
$broker = $this->getBroker(); | |
$response = Password::broker($broker)->reset($credentials, function ($user, $password) { | |
$this->resetPassword($user, $password); | |
}); | |
switch ($response) { | |
case Password::PASSWORD_RESET: | |
return $this->getResetSuccessResponse($response); | |
default: | |
return $this->getResetFailureResponse($request, $response); | |
} | |
} | |
/** | |
* Get the password reset validation rules. | |
* | |
* @return array | |
*/ | |
protected function getResetValidationRules() | |
{ | |
return [ | |
'token' => 'required', | |
'email' => 'required|email', | |
'password' => 'required|confirmed|min:6', | |
]; | |
} | |
/** | |
* Reset the given user's password. | |
* | |
* @param \Illuminate\Contracts\Auth\CanResetPassword $user | |
* @param string $password | |
* @return void | |
*/ | |
protected function resetPassword($user, $password) | |
{ | |
$user->password = bcrypt($password); | |
$user->save(); | |
return response()->json(['success' => true]); | |
} | |
/** | |
* Get the response for after a successful password reset. | |
* | |
* @param string $response | |
* @return \Symfony\Component\HttpFoundation\Response | |
*/ | |
protected function getResetSuccessResponse($response) | |
{ | |
return response()->json(['success' => true]); | |
} | |
/** | |
* Get the response for after a failing password reset. | |
* | |
* @param Request $request | |
* @param string $response | |
* @return \Symfony\Component\HttpFoundation\Response | |
*/ | |
protected function getResetFailureResponse(Request $request, $response) | |
{ | |
return response()->json(['success' => false]); | |
} | |
/** | |
* Get the broker to be used during password reset. | |
* | |
* @return string|null | |
*/ | |
public function getBroker() | |
{ | |
return property_exists($this, 'broker') ? $this->broker : null; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
On Line 34 (https://gist.github.com/imjohnbon/a04c3428ae8abf0a68753e25a73e3969#file-resetspasswords-php-L34) you're passing a callback but this callback doesn't seem to be called anywhere...