PasswordController.php 2.3 KB

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