fomvasss
@fomvasss
PHP developer

Как зафиксировать событие входа (авторизации) пользователя в Laravel?

Нужна записывать в БД дату входа (успешной авторизации) пользователя сайта. Планирую использовать для самой записи события и слушателя (Event & Listener) . Но не могу понять где именно вызывать event после входа пользователя. Наверное нужно писать какой то метод Auth/LoginController . Подскажите пожалуйста как лучше это реализовать
  • Вопрос задан
  • 1815 просмотров
Решения вопроса 1
@potkot
PHP программист
В laravel есть стандартное событие auth.login.

В файле EventServiceProvided.php добавить

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


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

Вот ссылка на доку

Стандартные события laravel
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
doniys_a
@doniys_a
Backend-разработчик (Php, node.js, python, ruby)
fomvasss
@fomvasss Автор вопроса
PHP developer
По минимуму мне нужно узнать где находится код, который выполняется после успешного входа пользователя и как его можно расширить для своей задачи.

update:
Ладно, пока сам решил. Сделал следующим образом, может кому то пригодится:
Создал Middleware
php artisan make:middleware ActiveUser
и в нем код:
public function handle($request, Closure $next)
    {
        $user = Auth::user();
        if (!$user->active) {
            abort(403);
        }
        $user->visited = Carbon::now();
        return $next($request);
    }


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

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

Похожие вопросы