Laravel7 ログイン時にemailとpassword以外のカラムもチェックに加える方法

emailとpasswordが一致するレコードの存在チェックだけでなく、他のカラムの値もチェックに加える方法。

例えば、statusカラムがあったとして、statusカラムが1のみログイン可能とする場合

実際のログイン処理は、/vendor/laravel/ui/auth-backendフォルダのAuthenticatesUsersトレイトに書かれているのでAuthenticatesUsers.phpを開き、↓credentialsメソッドをコピーする。

    protected function credentials(Request $request)
    {
        return $request->only($this->username(), 'password');
    }

/app/Http/Controllers/User/Auth/LoginController.phpを開きオーバーライドし、条件を追加すればOK。

    protected function credentials(Request $request)
    {
        $arr = $request->only($this->username(), 'password');
        $arr['status'] = 1;

        return $arr;
    }

また、statusカラムの値が1と2の場合のみログイン可能とする場合は、以下のようにすればOK。

    protected function credentials(Request $request)
    {
        $arr = $request->only($this->username(), 'password');
        $arr['status'] = [1, 2];

        return $arr;
    }

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です