<?php | |
/** | |
* This snippet goes into your | |
* \app\Http\Controllers\Auth\AuthController.php | |
* | |
* Make sure to update your login view as well | |
* (\resources\views\auth\login.blade.php). Just | |
* change | |
*/ | |
/** | |
* Handle a login request to the application. | |
* | |
* @param \Illuminate\Http\Request $request | |
* @return \Illuminate\Http\Response | |
*/ | |
public function postLogin(Request $request) | |
{ | |
// get our login input | |
$login = $request->input('login'); | |
// check login field | |
$login_type = filter_var( $login, FILTER_VALIDATE_EMAIL ) ? 'email' : 'username'; | |
// merge our login field into the request with either email or username as key | |
$request->merge([ $login_type => $login ]); | |
// let's validate and set our credentials | |
if ( $login_type == 'email' ) { | |
$this->validate($request, [ | |
'email' => 'required|email', | |
'password' => 'required', | |
]); | |
$credentials = $request->only( 'email', 'password' ); | |
} else { | |
$this->validate($request, [ | |
'username' => 'required', | |
'password' => 'required', | |
]); | |
$credentials = $request->only( 'username', 'password' ); | |
} | |
if ($this->auth->attempt($credentials, $request->has('remember'))) | |
{ | |
return redirect()->intended($this->redirectPath()); | |
} | |
return redirect($this->loginPath()) | |
->withInput($request->only('login', 'remember')) | |
->withErrors([ | |
'login' => $this->getFailedLoginMessage(), | |
]); | |
} |
@ptaking, just change email field name to login.
is there any way to login with both username and email without any change in AuthenticatesUsers trait?
I have an exception when using this code which is:
Call to undefined method Illuminate\Support\Facades\Request::input()
help please >>>
@alaa442 Remember to inport the Illuminate\Http\Request class! :)
in this snippet the $auth is not a valid property:
Undefined property: App\Http\Controllers\Auth\AuthController::$auth (on line 49 in your snippet)
@bflydesign
Make sure you have use Auth;
(it should be there already) and replace:
if ($this->auth->attempt($credentials, $request->has('remember')))
with
if (Auth::attempt($credentials, $request->has('remember')))
Thank you very much!
Only needed add use Auth
and alter for if (Auth::attempt($credentials, $request->has('remember')))
@ptaking - a little outdated, but I think he wanted to say to change the field type from email to text ...
Make sure to update your login view as well
Just change what?