PasswordController.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php namespace App\Http\Controllers\Auth;
  2. use Illuminate\Http\Request;
  3. use Illuminate\Contracts\Auth\PasswordBroker;
  4. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  5. /**
  6. * @Middleware("guest")
  7. */
  8. class PasswordController {
  9. /**
  10. * The password broker implementation.
  11. *
  12. * @var PasswordBroker
  13. */
  14. protected $passwords;
  15. /**
  16. * Create a new password controller instance.
  17. *
  18. * @param PasswordBroker $passwords
  19. * @return void
  20. */
  21. public function __construct(PasswordBroker $passwords)
  22. {
  23. $this->passwords = $passwords;
  24. }
  25. /**
  26. * Display the form to request a password reset link.
  27. *
  28. * @Get("password/email")
  29. *
  30. * @return Response
  31. */
  32. public function showResetRequestForm()
  33. {
  34. return view('password.email');
  35. }
  36. /**
  37. * Send a reset link to the given user.
  38. *
  39. * @Post("password/email")
  40. *
  41. * @param Request $request
  42. * @return Response
  43. */
  44. public function sendResetLink(Request $request)
  45. {
  46. switch ($response = $this->passwords->sendResetLink($request->only('email')))
  47. {
  48. case PasswordBroker::INVALID_USER:
  49. return redirect()->back()->with('error', trans($response));
  50. case PasswordBroker::RESET_LINK_SENT:
  51. return redirect()->back()->with('status', trans($response));
  52. }
  53. }
  54. /**
  55. * Display the password reset view for the given token.
  56. *
  57. * @Get("password/reset")
  58. *
  59. * @param string $token
  60. * @return Response
  61. */
  62. public function showResetForm($token = null)
  63. {
  64. if (is_null($token))
  65. {
  66. throw new NotFoundHttpException;
  67. }
  68. return view('password.reset')->with('token', $token);
  69. }
  70. /**
  71. * Reset the given user's password.
  72. *
  73. * @Post("password/reset")
  74. *
  75. * @param Request $request
  76. * @return Response
  77. */
  78. public function resetPassword(Request $request)
  79. {
  80. $credentials = $request->only(
  81. 'email', 'password', 'password_confirmation', 'token'
  82. );
  83. $response = $this->passwords->reset($credentials, function($user, $password)
  84. {
  85. $user->password = bcrypt($password);
  86. $user->save();
  87. });
  88. switch ($response)
  89. {
  90. case PasswordBroker::INVALID_PASSWORD:
  91. case PasswordBroker::INVALID_TOKEN:
  92. case PasswordBroker::INVALID_USER:
  93. return redirect()->back()->with('error', trans($response));
  94. case PasswordBroker::PASSWORD_RESET:
  95. return redirect()->to('/');
  96. }
  97. }
  98. }