123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- <?php
- namespace Illuminate\Foundation\Auth;
- use Illuminate\Http\JsonResponse;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Password;
- use Illuminate\Validation\ValidationException;
- trait SendsPasswordResetEmails
- {
- /**
- * Display the form to request a password reset link.
- *
- * @return \Illuminate\View\View
- */
- public function showLinkRequestForm()
- {
- return view('auth.passwords.email');
- }
- /**
- * Send a reset link to the given user.
- *
- * @param \Illuminate\Http\Request $request
- * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
- */
- public function sendResetLinkEmail(Request $request)
- {
- $this->validateEmail($request);
- // We will send the password reset link to this user. Once we have attempted
- // to send the link, we will examine the response then see the message we
- // need to show to the user. Finally, we'll send out a proper response.
- $response = $this->broker()->sendResetLink(
- $this->credentials($request)
- );
- return $response == Password::RESET_LINK_SENT
- ? $this->sendResetLinkResponse($request, $response)
- : $this->sendResetLinkFailedResponse($request, $response);
- }
- /**
- * Validate the email for the given request.
- *
- * @param \Illuminate\Http\Request $request
- * @return void
- */
- protected function validateEmail(Request $request)
- {
- $request->validate(['email' => 'required|email']);
- }
- /**
- * Get the needed authentication credentials from the request.
- *
- * @param \Illuminate\Http\Request $request
- * @return array
- */
- protected function credentials(Request $request)
- {
- return $request->only('email');
- }
- /**
- * Get the response for a successful password reset link.
- *
- * @param \Illuminate\Http\Request $request
- * @param string $response
- * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
- */
- protected function sendResetLinkResponse(Request $request, $response)
- {
- return $request->wantsJson()
- ? new JsonResponse(['message' => trans($response)], 200)
- : back()->with('status', trans($response));
- }
- /**
- * Get the response for a failed password reset link.
- *
- * @param \Illuminate\Http\Request $request
- * @param string $response
- * @return \Illuminate\Http\RedirectResponse
- *
- * @throws \Illuminate\Validation\ValidationException
- */
- protected function sendResetLinkFailedResponse(Request $request, $response)
- {
- if ($request->wantsJson()) {
- throw ValidationException::withMessages([
- 'email' => [trans($response)],
- ]);
- }
- return back()
- ->withInput($request->only('email'))
- ->withErrors(['email' => trans($response)]);
- }
- /**
- * Get the broker to be used during password reset.
- *
- * @return \Illuminate\Contracts\Auth\PasswordBroker
- */
- public function broker()
- {
- return Password::broker();
- }
- }
|