Добавление пользовательского предложения where в AuthenticatesUser Trait Laravel - PullRequest
1 голос
/ 06 июня 2019

Мы решили использовать Laravel для проекта в качестве тестового прогона для будущих фреймворков и действительно наслаждаемся им. Хотя есть одна проблема, с которой мы столкнулись.

Мы используем черту Illuminate\Foundation\Auth\AuthenticatesUsers, которая обрабатывает user authentication. Это работает хорошо. Тем не менее, в базе данных есть столбец с именем userstatus, который может быть 0 или 1.

Как мы можем вставить это условие where в черту Illuminate\Foundation\Auth\AuthenticatesUsers?

Я думал, может быть, что-то здесь (в моем LoginController):

public function authenticated($request , $user){
  //if $user->userstatus != 1 logout and redirect to start page
}

Но я не знаю, как logout (сейчас я изучаю это).

1 Ответ

0 голосов
/ 06 июня 2019

ваша логика верна, вы должны переопределить login и authenticated методы в LoginController.

ваши методы должны быть такими, как показано ниже:

этот метод должен быть в вашем LoginController.php:

    class LoginController extends Controller
    {

        use AuthenticatesUsers {
            login as public loginParent;
        }

        protected function login(Request $request){
            $default = '/';

            $user = User::where('email', $request->get('email'))->NotActive->first();

            if($user){
               return redirect()->intended($default);
            }

           return $this->loginParent($request);
        }


    protected function authenticated(Request $request, $user)
    {
        if($user->not_active) {
             $this->logout($request);
        }
    }
 }

, тогда мы должны создать ScopeNotActive метод в User.php Model as Local Scope:

//User.php
     public function ScopeNotActive($query){

          return $query->where('userStatus', '!=', 1);
        }

и Mutator, чтобы проверить, не активен ли пользователь:

// User.php
       public function getNotActiveAttribute(){

          return $this->userStatus != 1;
       }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...