Как лучше всего отправить уведомление, когда пользователь заблокирован в 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(...);
}
}
}