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






ваша логика верна, вы должны переопределить методы 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
Я получил ваш вариант использования. Я обновлю свой ответ, это немного сложно
проверьте мой обновленный ответ, пожалуйста. функция выхода перенаправит вас на стартовую страницу, проследив логику этого в черте AuthenticatesUsers
пожалуйста, проверьте мой обновленный ответ