auth = $auth; $this->passwords = $passwords; $this->middleware('guest'); } /** * Display the form to request a password reset link. * * @return Response */ public function getEmail() { return view('auth.password'); } /** * Send a reset link to the given user. * * @param Request $request * @return Response */ public function postEmail(Request $request) { $this->validate($request, ['email' => 'required']); switch ($response = $this->passwords->sendResetLink($request->only('email'))) { case PasswordBroker::INVALID_USER: return redirect()->back()->withErrors(['email' =>trans($response)]); case PasswordBroker::RESET_LINK_SENT: return redirect()->back()->with('status', trans($response)); } } /** * Display the password reset view for the given token. * * @param string $token * @return Response */ public function getReset($token = null) { if (is_null($token)) { throw new NotFoundHttpException; } return view('auth.reset')->with('token', $token); } /** * Reset the given user's password. * * @param Request $request * @return Response */ public function postReset(Request $request) { $credentials = $request->only( 'email', 'password', 'password_confirmation', 'token' ); $response = $this->passwords->reset($credentials, function($user, $password) { $user->password = bcrypt($password); $user->save(); }); switch ($response) { case PasswordBroker::INVALID_PASSWORD: case PasswordBroker::INVALID_TOKEN: case PasswordBroker::INVALID_USER: return redirect()->back() ->withInput($request->only('email')) ->withErrors(['email' => trans($response)]); case PasswordBroker::PASSWORD_RESET: return $this->loginAndRedirect($request->email); } } /** * Login the user with the given e-mail address and redirect home. * * @param string $email * @return Response */ protected function loginAndRedirect($email) { $this->auth->login(User::where('email', $email)->firstOrFail()); return redirect('/home'); } }