public function postReset(Request $request, PasswordBroker $broker) { $credentials = $request->only('email'); Validator::make($credentials, ['email' => 'required|email']); $response = $broker->sendResetLink($credentials, function ($m) { $m->subject('Reset Password'); }); switch ($response) { case PasswordBroker::RESET_LINK_SENT: return response()->json('Password reset sent.'); case PasswordBroker::INVALID_USER: return response()->json(trans($response))->setStatusCode(412, 'Invalid User'); } }
/** * Reset the given user's password. * * @param Request $request * @return Response */ public function postChange(Request $request) { $validator = Validator::make($request->all(), ['token' => 'required', 'old_passwd' => 'required', 'password' => 'required|confirmed'], [], ['old_passwd' => '原密码', 'password' => '新密码']); if ($validator->fails()) { return Redirect::back()->withInput()->withErrors($validator); } $auth_array = array('email' => Auth::user()->email, 'password' => Input::get('old_passwd')); if (Auth::validate($auth_array)) { } else { return redirect()->back()->withErrors("请输入正确的密码!"); } $credentials = array('email' => Auth::user()->email, 'password' => Input::get('password'), 'password_confirmation' => Input::get('password_confirmation'), 'token' => Input::get('token')); $response = $this->passwords->reset($credentials, function ($user, $password) { $user->password = bcrypt($password); $user->save(); $this->auth->login($user); }); switch ($response) { case PasswordBroker::PASSWORD_RESET: $array = array('email' => Auth::user()->email); $token = $this->passwords->getToken($array); UserManageLog::insertLog("修改密码", Auth::user()->id, Auth::user()->name, Auth::user()->email, Auth::user()->name . '(' . Auth::user()->email . ')', null, null, $request->ip()); return view('auth.change_password')->withTips("密码修改成功!")->withToken($token); default: return redirect()->back()->withErrors(['email' => trans($response)]); } }
/** * Process a password reset request. This is the last step in the reset process * * @param $credentials * @return mixed|string */ public function resetPassword($credentials) { $status = $this->passwordBroker->reset($credentials, function ($user, $password) { $user->password = app('hash')->make($password); if ($user->save()) { // auto login the user auth()->login($user); } }); return $status; }
/** * Reset a users password * @param AuthRequestInterface $request * @param PasswordBroker $passwords * @return Illuminate\Http\Response */ public function postReset(AuthRequestInterface $request, PasswordBroker $passwords) { $credentials = $request->only('email', 'password', 'password_confirmation', 'token'); $response = $passwords->reset($credentials, function ($user, $password) { $this->resetPassword($user, $password); }); switch ($response) { case PasswordBroker::PASSWORD_RESET: return $this->passwordWasReset($request); break; default: return $this->passwordWasNotReset($request, $response); break; } }
public function postReset() { $credentials = $this->request->only('email', 'password', 'password_confirmation', 'token'); $response = $this->password->reset($credentials, function ($user, $password) { $user->password = $this->hasher->make($password); $user->save(); }); switch ($response) { case $this->password->INVALID_PASSWORD: case $this->password->INVALID_TOKEN: case $this->password->INVALID_USER: return $this->redirector->back()->with('error', $this->translator->get($response)); case $this->password->PASSWORD_RESET: return $this->redirector->to('/'); } }
/** * Get the user for the given credentials. * * @param array $credentials * @return \Illuminate\Contracts\Auth\CanResetPassword * @throws \UnexpectedValueException * @static */ public static function getUser($credentials) { return \Illuminate\Auth\Passwords\PasswordBroker::getUser($credentials); }
/** * Register the password broker instance. * * @return void */ protected function registerPasswordBroker() { $this->app->singleton('auth.password', function ($app) { // The password token repository is responsible for storing the email addresses // and password reset tokens. It will be used to verify the tokens are valid // for the given e-mail addresses. We will resolve an implementation here. $tokens = $app['auth.password.tokens']; $users = $app['auth']->driver()->getProvider(); $view = $app['config']['auth.password.email']; // The password broker uses a token repository to validate tokens and send user // password e-mails, as well as validating that password reset process as an // aggregate service of sorts providing a convenient interface for resets. $broker = new PasswordBroker($tokens, $users, $app['mailer'], $view); // register validator for password $broker->validator(function ($credentials) { try { return app('xe.user')->validatePassword($credentials['password']); } catch (\Exception $e) { return false; } }); return $broker; }); }