2

条件付きでユーザーを認証しています。

ユーザー ロール = 1 ログインは成功する必要があり、それ以外の場合はログインが失敗する必要があります

今私がやっていることは次のとおりです。

if (Auth::attempt(array('email' => $email, 'password' => $password, 'role' => 1)))
{
    // Login User
} else {
    return Redirect::route('admin.login')
        ->with('message', 'Unauthorized user Or wrong email / password combination');
}

正常に動作していますが、認証が失敗した場合、失敗した理由を突き止めたいので、認証が失敗した理由に基づいて次のメッセージを表示できるようにします。

  • 存在しないメールアドレス
  • 間違ったパスワード
  • ユーザーの役割が正しくありません。

これらのことを行う方法はありますか?

4

5 に答える 5

3

Auth::validate()失敗した部分で使うのがコツです。どちらが問題であるかを解決するには、いくつかの検証を行う必要があります

if (Auth::attempt(array('email' => $email, 'password' => $password, 'role' => 1)))
{
    // Login User
} else {
    Auth::validate(array('email' => $email, 'password' => $password)) {
           // Wrong role
 } else { 
    if (User::where('email', $email)->first()) {
           // Wrong password
    }  else {
       // Wrong username
    } 
}
于 2015-02-23T09:45:08.127 に答える