有条件地添加到Laravel身份验证

时间:2020-02-11 05:52:20

标签: php laravel-5

在我的users表中,我有role字段,可以用admindriverpetugasrental中的任何一个填充。我想让roleadmin登录rental的用户,但登录系统会拒绝该用户。

我尝试覆盖credentials()中的LoginController.php方法,如下所示

protected function credentials(Request $request)
{
    $field = $this->field($request);

    return [
        $field => $request->get($this->username()),
        'password' => $request->get('password'),
        'role'=>['admin', 'jasa_angkutan', 'rental']
    ];
}

但是它不起作用。我确实不知道如何达到要求。

1 个答案:

答案 0 :(得分:0)

这是一个肮脏的骇客,但至少对我而言有效。

protected function credentials(Request $request)
{
    $field = $this->field($request);

    $user = \App\User::where([
        $field=>$request->get($this->username())
    ])->whereIn('role', [
        'admin', 'jasa_angkutan', 'rental'
    ])->first();

    if($user){
        return [
            $field => $request->get($this->username()),
            'password' => $request->get('password')
        ];
    }

    return [];
}

在将凭据传递给auth方法之前,首先检查用户和角色是否符合条件。就是这样。