I have a login page . It's controller function has 3 cases:
case 1. email or password is wrong->shows error //working fine
case 2. email is not confirmed->shows error //working fine
case 3. everything is fine->should loggedIn // not working // shows a blank page
my logic:
public function postSignIn(Request $request)
{
$this->validate($request,[
'loginEmail'=> 'required' ,
'loginPassword' => 'required'
]);
$remember = $request->input('remember_me');
$user=User::where('email', $request['loginEmail'])->first();
if(!$user)
{
\Session::flash('message','Login credentials are wrong!');
\Session::flash('alert-class', 'alert-warning');
return redirect()->back();
}
elseif($user->confirmed==1)
{
if(Auth::attempt(['email'=>$request['loginEmail'], 'password' => $request['loginPassword']],$remember))
{
//return redirect()->back();
return redirect()->route('myplace',['username' => $user->username]) ;
}
}
else
{
\Session::flash('message','Please verify your email!');
\Session::flash('alert-class', 'alert-warning');
return redirect()->back();
}
}
i just cleared my database then signUp .hooray everything worked fine!
You should put an else statement against the second if.
if (!$user) {
/* case 1. email or password is wrong */
} elseif ($user->confirmed==1) {
/* Case 3 not working. Add an addition else statement */
if(Auth::attempt(['email'=>$request['loginEmail'], 'password' => $request['loginPassword','confirmed'=>1]],$remember)) {
......
} else {
echo "Login attempt error!";
var_dump(Auth::attempt(['email'=>$request['loginEmail'], 'password' => $request['loginPassword','confirmed'=>1]],$remember))
exit;
}
} else {
/* case 2. email is not confirmed */
}
This if statement:
if(Auth::attempt(['email'=>$request['login...etc
Has no else
, so if this condition is not met, nothing happens. You need to add an else
to this statement.