Добавление пользовательского предложения where в AuthenticatesUser Trait Laravel

Мы решили использовать 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 (сейчас занимаюсь этим) .

пожалуйста, проверьте мой обновленный ответ

Thamer 06.06.2019 00:48
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
1
344
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

ваша логика верна, вы должны переопределить методы 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 модели как локальную область видимости:

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

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

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

// User.php
       public function getNotActiveAttribute(){

          return $this->userStatus != 1;
       }

мой комментарий был для предыдущего решения. Можете ли вы сказать мне, как сделать запрос на получение из кода, который у вас был до этого? return redirect()->intended('/logout'); возвращает ошибку как запрос POST

somejkuser 06.06.2019 00:51

Я получил ваш вариант использования. Я обновлю свой ответ, это немного сложно

Thamer 06.06.2019 00:54

проверьте мой обновленный ответ, пожалуйста. функция выхода перенаправит вас на стартовую страницу, проследив логику этого в черте AuthenticatesUsers

Thamer 06.06.2019 01:04

Другие вопросы по теме