使用additonal condition laravel 5.3登录

时间:2016-09-04 00:01:48

标签: php authentication laravel-5.3

我正在尝试使用明显的电子邮件和密码验证用户,以及如果数据库中的ban_status设置为0。

我看过最新的laravel文档,我在AuthenticateUsers.php中尝试过这种方式

protected function validateLogin(Request $request)
{
    $this->validate($request, [
        $this->username() => 'required', 'password' => 'required', 'ban_status' => '0',
    ]);
}

就我所知,这没有做任何事情,无论禁止状态是否为0,都会登录用户,我应该在哪里做这个额外的条件?

由于

1 个答案:

答案 0 :(得分:0)

在您的代码中,您有:

    $this->validate($request, [
        $this->username() => 'required', //????
                             'password' => 'required', 
                             'ban_status' => '0',
    ]);
  • 我不确定你为什么单独“需要”,所以我在思考这个问题:

    $user = $this->username();
    $this->validate($request, [
        $this->username() => 'email' =>    'bail|required|email|exists:dbnamehere.tablenamehere|min:7', //can also be username
                             'password' => 'bail|required|min:8',                                  
                             'ban_status' => ['required',
                                               Rule::unique('users_table_name_here')->where(function ($query) use ($user) {
                                                      $query->where(['account_id',$user],
                                                                    ['ban_status', 0])]
                                               }) 
    ]);
    

这可能无法正常工作,所以你可能需要稍微修补它,但它很好地利用了Laravel的Eloquent模型。所以希望这可以指出你正确的方向。还要确保将表名和字段名更改为数据库中的最新内容。

快乐编码=)

<强>参考:

https://laravel.com/docs/5.3/validation