Created
June 9, 2017 09:09
-
-
Save the94air/e05d4a1645db046175d1acc478901f54 to your computer and use it in GitHub Desktop.
I want to log user in with email or username
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace Illuminate\Foundation\Auth; | |
use Illuminate\Http\Request; | |
use Illuminate\Support\Facades\Auth; | |
trait AuthenticatesUsers | |
{ | |
use RedirectsUsers, ThrottlesLogins; | |
/** | |
* Show the application's login form. | |
* | |
* @return \Illuminate\Http\Response | |
*/ | |
public function showLoginForm() | |
{ | |
return view('auth.login'); | |
} | |
/** | |
* Handle a login request to the application. | |
* | |
* @param \Illuminate\Http\Request $request | |
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\Response | |
*/ | |
public function login(Request $request) | |
{ | |
$this->validateLogin($request); | |
// If the class is using the ThrottlesLogins trait, we can automatically throttle | |
// the login attempts for this application. We'll key this by the username and | |
// the IP address of the client making these requests into this application. | |
if ($this->hasTooManyLoginAttempts($request)) { | |
$this->fireLockoutEvent($request); | |
return $this->sendLockoutResponse($request); | |
} | |
if ($this->attemptLogin($request)) { | |
return $this->sendLoginResponse($request); | |
} | |
// If the login attempt was unsuccessful we will increment the number of attempts | |
// to login and redirect the user back to the login form. Of course, when this | |
// user surpasses their maximum number of attempts they will get locked out. | |
$this->incrementLoginAttempts($request); | |
return $this->sendFailedLoginResponse($request); | |
} | |
/** | |
* Validate the user login request. | |
* | |
* @param \Illuminate\Http\Request $request | |
* @return void | |
*/ | |
protected function validateLogin(Request $request) | |
{ | |
$this->validate($request, [ | |
$this->username() => 'required|string', | |
'password' => 'required|string', | |
]); | |
} | |
/** | |
* Attempt to log the user into the application. | |
* | |
* @param \Illuminate\Http\Request $request | |
* @return bool | |
*/ | |
protected function attemptLogin(Request $request) | |
{ | |
return $this->guard()->attempt( | |
$this->credentials($request), $request->has('remember') | |
); | |
} | |
/** | |
* Get the needed authorization credentials from the request. | |
* | |
* @param \Illuminate\Http\Request $request | |
* @return array | |
*/ | |
protected function credentials(Request $request) | |
{ | |
return $request->only($this->username(), 'password'); | |
} | |
/** | |
* Send the response after the user was authenticated. | |
* | |
* @param \Illuminate\Http\Request $request | |
* @return \Illuminate\Http\Response | |
*/ | |
protected function sendLoginResponse(Request $request) | |
{ | |
$request->session()->regenerate(); | |
$this->clearLoginAttempts($request); | |
return $this->authenticated($request, $this->guard()->user()) | |
?: redirect()->intended($this->redirectPath()); | |
} | |
/** | |
* The user has been authenticated. | |
* | |
* @param \Illuminate\Http\Request $request | |
* @param mixed $user | |
* @return mixed | |
*/ | |
protected function authenticated(Request $request, $user) | |
{ | |
// | |
} | |
/** | |
* Get the failed login response instance. | |
* | |
* @param \Illuminate\Http\Request $request | |
* @return \Illuminate\Http\RedirectResponse | |
*/ | |
protected function sendFailedLoginResponse(Request $request) | |
{ | |
$errors = [$this->username() => trans('auth.failed')]; | |
if ($request->expectsJson()) { | |
return response()->json($errors, 422); | |
} | |
return redirect()->back() | |
->withInput($request->only($this->username(), 'remember')) | |
->withErrors($errors); | |
} | |
/** | |
* Get the login username to be used by the controller. | |
* | |
* @return string | |
*/ | |
public function username() | |
{ | |
return 'email'; | |
} | |
/** | |
* Log the user out of the application. | |
* | |
* @param \Illuminate\Http\Request $request | |
* @return \Illuminate\Http\Response | |
*/ | |
public function logout(Request $request) | |
{ | |
$this->guard()->logout(); | |
$request->session()->flush(); | |
$request->session()->regenerate(); | |
return redirect('/'); | |
} | |
/** | |
* Get the guard to be used during authentication. | |
* | |
* @return \Illuminate\Contracts\Auth\StatefulGuard | |
*/ | |
protected function guard() | |
{ | |
return Auth::guard(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment