Как лучше всего отправить уведомление, когда пользователь заблокирован в Laravel Auth?

Я хочу отправить уведомление по электронной почте всякий раз, когда пользователь достигает максимально разрешенных попыток входа в систему (т.е. пользователь заблокирован).

Каков был бы лучший способ сделать это? Я вижу метод fireLockoutEvent в классе ThrottlesLogins, должен ли я прослушивать это событие? И где мне это сделать?

1 ответ

Решение

Да. Создать слушателя для события LockoutEvent,

php artisan make:listener LockoutEventListener

LockoutEventListener.php создается в папке app/Listeners/LockoutEventListener, Затем зарегистрируйте LockoutEvent слушатель приложения в app/providers/EventServiceProvider.php,

EventServiceProvider.php

protected $listen = [
    ...
     'Illuminate\Auth\Events\Lockout' => [
        'App\Listeners\LockoutEventListener',
    ],
];

Затем обновите метод обработчика события LockoutEvent,

LockoutEventListener.php

public function handle($event)
{
    if ($event->request->has('email')) {
        $user = User::where('email', $event->request->input('email'))->first();
        if ($user && !$attemptEmailSent) {
            Mail::to($user->email)->send(...);
        }
    }
}
Другие вопросы по тегам