123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- <?php namespace App\Http\Controllers\Auth;
- use App\User;
- use App\Http\Requests;
- use App\Http\Controllers\Controller;
- use Illuminate\Contracts\Auth\Guard;
- use Illuminate\Contracts\Auth\PasswordBroker;
- use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
- class PasswordController extends Controller {
- /**
- * The Guard implementation.
- *
- * @var Guard
- */
- protected $auth;
- /**
- * The password broker implementation.
- *
- * @var PasswordBroker
- */
- protected $passwords;
- /**
- * Create a new password controller instance.
- *
- * @param PasswordBroker $passwords
- * @return void
- */
- public function __construct(Guard $auth, PasswordBroker $passwords)
- {
- $this->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 EmailPasswordLinkRequest $request
- * @return Response
- */
- public function postEmail(Requests\Auth\EmailPasswordLinkRequest $request)
- {
- 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 ResetPasswordRequest $request
- * @return Response
- */
- public function postReset(Requests\Auth\ResetPasswordRequest $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');
- }
- }
|