У меня вопрос к части Аутентификация пользователя с помощью условий в документации Laravel.
В какой контроллер и метод следует вставить это условие, чтобы оно работало во всем приложении. Я не совсем уловил это.
Это конструктор app/Http/Controllers/Auth/LoginController?
if (Auth::attempt(['email' => $email, 'password' => $password, 'active' => 1]))
{
// The user is active, not suspended, and exists.
}
Спасибо
Контроллер входа в Laravel использует трейт AuthenticatesUsers, в котором вы можете найти его реализацию. Взгляните на этого поставщика / laravel / framework / src / Illuminate / Foundation / Auth / Auth enticatesUsers.php






Это зависит от того, какую версию вы используете. Вы связались с документом 5.0, поэтому я не уверен, действительно ли вы его используете.
В последних версиях вы можете либо полностью переопределить метод LoginController :: login, либо перейти к методу LoginController :: tryLogin. Оба они фактически определены в трейте AuthenticateUsers.
Я склонен относиться к этому по-другому. Если пользователь неактивен или заблокирован, я предпочитаю отображать для него другое сообщение, а не просто общий неудачный вход в систему. Я бы предпочел использовать промежуточное ПО для проверки их статуса и перенаправления с сообщением об их учетной записи.
class CheckActiveMiddleware
{
public function handle($request, Closure $next)
{
// Check that the user is still active
if ($request->user()->active)
{
return $next($request);
}
return redirect('/login')->withErrors('Your account has been deactivated.');
}
}
Это также позволяет вам деактивировать пользователей, которые все еще вошли в систему. Поскольку с вашим методом вошедший в систему пользователь, выбравший «Запомнить меня», все равно сможет использовать приложение до тех пор, пока не выйдет из системы, поскольку ваша проверка выполняется только при входе в систему.
Примените группу маршрутов к своим маршрутам, как этот пример. Тогда у вас могут быть общедоступные маршруты за пределами группы, если вам это понадобится позже.