In laravel for login attempt I generally use something like this:
if (Auth::attempt(array('email' => $usernameinput, 'password' => $password), true))
{
// The user is being remembered...
}
Basically $usernameinput
will check with email
from my table.
I was thinking to do it in a different way, like there is email
, username
and password
in my table. $usernameinput
can be either email
or username
field in my table.
How can I Auth::attempt
with a condition like:
(email==$usernameinput OR username==$usernameinput) AND password == $password
Here's the complete working solution: (Tested with Laravel 5.3)
Just add this method(or we can say override) into app\Http\Controllers\Auth\LoginController.php
It can be done something like this
Users could use an email field as their username, and it might not match the email they used for the email field. Safer to attempt authentication twice:
Well, you could simply check if
$usernameinput
matches an email pattern and if it does, use theemail
field, else use theusername
field. This sounds reasonable because, well, you really shouldn't have any e-mail in your database that doesn't match the pattern. Something like this:The other option is to extend
Illuminate\Auth\Guard
adding the wanted functionality and setting it as theauth
component, in a new service provider.