V
V
Vasyl Fomin2016-11-24 02:16:01
User identification
Vasyl Fomin, 2016-11-24 02:16:01

How to capture user login (authorization) event in Laravel?

It is necessary to record in the database the date of entry (successful authorization) of the site user. I plan to use Event & Listener for the recording itself. But I can't figure out where exactly to call the event after the user logs in. Probably you need to write some method Auth/LoginController . Please tell me the best way to implement this

Answer the question

In order to leave comments, you need to log in

3 answer(s)
Константин, 2016-11-25
@fomvasss

В laravel есть стандартное событие auth.login.
В файле EventServiceProvided.php добавить

protected $listen = [
    'auth.login' => [
        'App\Handlers\Events\AuthLoginEventHandler',
    ],
];

Что это значит: слушаем событие 'auth.login' вот этим 'App\Handlers\Events\AuthLoginEventHandler' слушателем. В нем и пишем код, что хотим делать при наступлении события.
Вот ссылка на доку
Стандартные события laravel

Сергей Доний, 2016-11-24
@doniys_a

На stackoverflow норм расписано

V
Vasyl Fomin, 2016-11-24
@fomvasss Автор вопроса

По минимуму мне нужно узнать где находится код, который выполняется после успешного входа пользователя и как его можно расширить для своей задачи.
update:
Ладно, пока сам решил. Сделал следующим образом, может кому то пригодится:
Создал Middleware
и в нем код:

public function handle($request, Closure $next)
    {
        $user = Auth::user();
        if (!$user->active) {
            abort(403);
        }
        $user->visited = Carbon::now();
        return $next($request);
    }

Наверное "костыль" но другого способа не нашел. Тем более что мне еще была нужна проверка на активированость (админ может деактивировать) пользователя на сайте.
Недостаток в том что чтобы записалась дата посещения нужно что бы пользователь ранее выходил, хотя наверное так нормально. После деактивации юзера на сайте, он даже на страницу авторизации не зайдет, пока не будет удалена его сессия. Ну и использование Middleare наверное не лучший вариант для этой задачи.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question