2017-04-06 35 views
0

私のLaravel 5.4プロジェクトでSentinel by Cartalystを使用しています。しかし、私は、ユーザーがログインするために彼/彼女の資格情報を提供した後、「ユーザー」テーブルのデータベースフィールドの値をチェックするために抱き合わせています。Cartalyst/Sentinel Laravel 5.4 - ログインする前にデータベースフィールドを確認する

if(Sentinel::authenticate($credentials, $rememberMe)) { 

    $slug = Sentinel::getUser()->roles()->first()->slug; 
    if($slug == 'A') { 
     Session::flash('welcome_message' , 'A'); 
     return response()->json(['redirect' => '/A/dashboard']); 
    } elseif($slug == 'B') { 
     Session::flash('welcome_message' , 'B'); 
     return response()->json(['redirect' => '/B/dashboard']); 
    } 
} else { 
    return response()->json(['error' => 'Wrong credentials entered'], 500); 
} 


// if(Sentinel::getUser()->status == 'Active') -- if this is true we log in 

問題を私はthis..though実装する方法を見つけるカントそれは、フィールドをチェックしますが、それは、ユーザーが

+0

は 'センチネルです::認証()' trueを返しますか? –

+0

@PankitGami Sentinel :: authenticate()は、ユーザーが正しいログイン資格情報を提供していますが、その前に 'active'フィールドをチェックしたい場合にのみtrueを返します。フィールドがアクティブでない場合はauthenticate()がtrueを返した後でも、ユーザはログインしません –

+0

したがって、両方をチェックしたいと思います。ユーザーが正しい資格情報を提供し、彼のステータスがアクティブでなければならない場合にのみ、彼にログインさせますか? –

答えて

0

に記録されますまた、その後、falseを返す場合、次の試してみてください。

if($user = Sentinel::authenticate($credentials, $rememberMe) && $user->status == 'Active') { 

    $slug = Sentinel::getUser()->roles()->first()->slug; 
    if($slug == 'A') { 
     Session::flash('welcome_message' , 'A'); 
     return response()->json(['redirect' => '/A/dashboard']); 
    } elseif($slug == 'B') { 
     Session::flash('welcome_message' , 'B'); 
     return response()->json(['redirect' => '/B/dashboard']); 
    } 
} else { 
    return response()->json(['error' => 'Wrong credentials entered'], 500); 
} 
関連する問題