@Web__Devel

Как в Laravel 5 сделать дополнительное условие к аутентификации?

Например условие (active == 1). И чтобы если это условие не выполнится, то пользователю выводилось бы сообщение, что он не прошел именно по этому условию. А если он еще не зарегистрирован вообще, то выводилось бы сообщение, что он просто еще не зарегистрирован?
------
Пытался по разному. Laravel сначала ни в какую не ставило переопределение метода authenticate() в LoginController, и я переопределял метод credentials(). Потом вдруг ожил метод authenticate(), и я обрадовался. Спустя полчаса он снова умер. А изначально вообще пытался через middleware, events, listeners. Но там вообще какая-то неадекватная реакция, и я оттуда ушел
  • Вопрос задан
  • 419 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Result007
P|-|P
Я сделал доступ по active так :) Laravel 5.2

AuthController.php добавил функцию:
public function getCredentials(Request $request)
    {
        $credentials = $request->only($this->loginUsername(), 'password');

        return array_add($credentials, 'active', '1');
    }


Так же изменил Middleware -> Authenticate.php:

public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->guest()) {
            if ($request->ajax()) {
                return response('Unauthorized.', 401);
            } else {
                return redirect()->guest('login');
            }
        } else if (Auth::guard($guard)->user()->active == false) {

            $request->session()->flush();
            
            Auth::logout();

            if ($request->ajax()) {
                return response('Unauthorized.', 401);
            } else {
                return redirect('/login');
            }
        }

        return $next($request);
    }


Может конечно это и не так немного делается, но вроде все хорошо, могу подключать и отключать пользователей по active :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы