在laravel 5.2中重定向状态为1和3的活动用户

时间:2017-10-04 09:08:40

标签: php authentication laravel-5.2

在我的Laravel 5.2项目中,我有用户表,其状态字段有3个值。值为 0 =无效,1 =有效,2 =已付。登录后我想检查用户是否有状态1或3. 如果他们属于状态1或3,那么我需要重定向到仪表板。没有其他 。以下是我在AuthController中的getcredential方法。

protected function getCredentials($request) {

 return $request->only($this->loginUsername(), 'password') + ['status' => 1];
}

如何在此检查这两种状态。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

我找到了解决这个问题的方法。我按原样保留了getCredential方法。

protected function getCredentials($request) {
    return $request->only($this->loginUsername(), 'password') +
    ['status' => 1];
}

我在AuthController的登录功能中编写了以下代码。

if($user->status == 3){
 if(Auth::attempt(['email' => $request['email'], 'password' => $request['password'], 'status' => 3,])) 
                     {

                        $fallback_url =  '/dashboard';
                        $intended_url = 
                                Redirect::intended($fallback_url)->getTargetUrl();
                        return response()->json(['auth' => true, 'intended' => $intended_url]);

                    }
  }

现在状态为1且状态= 3的用户可以登录仪表板。

答案 1 :(得分:0)

凭据的值不需要是静态值,您还可以提供一个Closure,由用户提供程序在其用于检查凭据的查询上执行。{/ p>

以下应该可以解决问题:

protected function getCredentials($request) {
  return $request->only($this->loginUsername(), 'password') + ['status' => function($query) {
    $query->whereIn('status', [1, 3]);
  }];
}