ForgotPasswordController.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace App\Http\Controllers\Auth;
  3. use App\Http\Controllers\Controller;
  4. use App\User;
  5. use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Facades\Password;
  8. class ForgotPasswordController extends Controller
  9. {
  10. /*
  11. |--------------------------------------------------------------------------
  12. | Password Reset Controller
  13. |--------------------------------------------------------------------------
  14. |
  15. | This controller is responsible for handling password reset emails and
  16. | includes a trait which assists in sending these notifications from
  17. | your application to your users. Feel free to explore this trait.
  18. |
  19. */
  20. use SendsPasswordResetEmails;
  21. /**
  22. * Create a new controller instance.
  23. *
  24. * @return void
  25. */
  26. public function __construct()
  27. {
  28. $this->middleware('guest');
  29. }
  30. /**
  31. * Send a reset link to the given user.
  32. *
  33. * @param \Illuminate\Http\Request $request
  34. * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
  35. */
  36. public function sendResetLinkEmail(Request $request)
  37. {
  38. $this->validateUsername($request);
  39. // We will send the password reset link to this user. Once we have attempted
  40. // to send the link, we will examine the response then see the message we
  41. // need to show to the user. Finally, we'll send out a proper response.
  42. $response = $this->broker()->sendResetLink(
  43. $request->only('username')
  44. );
  45. return $response == Password::RESET_LINK_SENT
  46. ? $this->sendResetLinkResponse($request, $response)
  47. : $this->sendResetLinkFailedResponse($request, $response);
  48. }
  49. /**
  50. * Validate the email for the given request.
  51. *
  52. * @param \Illuminate\Http\Request $request
  53. * @return void
  54. */
  55. protected function validateUsername(Request $request)
  56. {
  57. $request->validate(['username' => 'required|alpha_num|max:20']);
  58. }
  59. /**
  60. * Get the response for a failed password reset link.
  61. *
  62. * @param \Illuminate\Http\Request $request
  63. * @param string $response
  64. * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
  65. */
  66. protected function sendResetLinkFailedResponse(Request $request, $response)
  67. {
  68. return back()
  69. ->withInput($request->only('username'))
  70. ->withErrors(['username' => trans($response)]);
  71. }
  72. }