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
I have read some articles but I didn't understand it can you explain it
Just do a check on both cases:
if (Auth::attempt(array('email' => $usernameinput, 'password' => $password), true) ||
Auth::attempt(array('username' => $usernameinput, 'password' => $password), true))
{
// The user is being remembered...
}
Assuming you don't allow @
in username, you can do it this way:
$data['password] = $password;
if (strpos($usernameinput, '@') === false) {
$data['username'] = $usernameinput;
}
else {
$data['email'] = $usernameinput;
}
if Auth::attempt($data, true) {
// The user is being remembered...
}