12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- <?php
- namespace App\Http\Controllers\Auth;
- use App\Http\Controllers\Controller;
- use App\Models\User;
- use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Password;
- class ForgotPasswordController extends Controller
- {
- /*
- |--------------------------------------------------------------------------
- | Password Reset Controller
- |--------------------------------------------------------------------------
- |
- | This controller is responsible for handling password reset emails and
- | includes a trait which assists in sending these notifications from
- | your application to your users. Feel free to explore this trait.
- |
- */
- use SendsPasswordResetEmails;
- /**
- * Create a new controller instance.
- *
- * @return void
- */
- public function __construct()
- {
- $this->middleware('guest');
- }
- /**
- * 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->validateUsername($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(
- $request->only('username')
- );
- 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 validateUsername(Request $request)
- {
- $request->validate(['username' => 'required|regex:/^[a-zA-Z0-9]*$/|max:20']);
- }
- /**
- * Get the response for a failed password reset link.
- *
- * @param \Illuminate\Http\Request $request
- * @param string $response
- * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
- */
- protected function sendResetLinkFailedResponse(Request $request, $response)
- {
- return back()
- ->withInput($request->only('username'))
- ->withErrors(['username' => trans($response)]);
- }
- }
|