ResetPassword.php 2.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace App\Http\Controllers\Auth;
  3. use App\Http\Controllers\Controller;
  4. use Illuminate\Auth\Events\PasswordReset;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\Hash;
  7. use Illuminate\Support\Facades\Password;
  8. use Illuminate\Support\Str;
  9. use Illuminate\Validation\ValidationException;
  10. class ResetPassword extends Controller
  11. {
  12. /**
  13. * Display the password reset view.
  14. *
  15. * @param \Illuminate\Http\Request $request
  16. * @return \Inertia\Response
  17. */
  18. public function create(Request $request)
  19. {
  20. return inertia('auth/ResetPassword', [
  21. 'email' => $request->email,
  22. 'token' => $request->route('token'),
  23. ]);
  24. }
  25. /**
  26. * Handle an incoming new password request.
  27. *
  28. * @param \Illuminate\Http\Request $request
  29. * @return \Illuminate\Http\RedirectResponse
  30. *
  31. * @throws \Illuminate\Validation\ValidationException
  32. */
  33. public function store(Request $request)
  34. {
  35. $request->validate([
  36. 'token' => 'required',
  37. 'email' => 'required|email',
  38. 'password' => ['required', 'confirmed', \Illuminate\Validation\Rules\Password::default()],
  39. ]);
  40. // Here we will attempt to reset the user's password. If it is successful we
  41. // will update the password on an actual user model and persist it to the
  42. // database. Otherwise we will parse the error and return the response.
  43. $status = Password::reset(
  44. $request->only('email', 'password', 'password_confirmation', 'token'),
  45. function ($user) use ($request) {
  46. $user->forceFill([
  47. 'password' => Hash::make($request->password),
  48. 'remember_token' => Str::random(60),
  49. ])->save();
  50. event(new PasswordReset($user));
  51. }
  52. );
  53. // If the password was successfully reset, we will redirect the user back to
  54. // the application's home authenticated view. If there is an error we can
  55. // redirect them back to where they came from with their error message.
  56. if ($status === Password::PASSWORD_RESET) {
  57. return redirect()->route('login')->with('status', __($status));
  58. }
  59. throw ValidationException::withMessages([
  60. 'email' => [trans($status)],
  61. ]);
  62. }
  63. }