在用户被Laravel Auth锁定时发送通知的最佳方式是什么?

时间:2018-04-14 15:15:41

标签: laravel events lockout

我想在用户达到允许的最大登录次数时发送电子邮件通知(即用户被锁定)。

最好的方法是什么? 我在ThrottlesLogins类中看到了一个fireLockoutEvent方法,我应该监听那个事件吗?我应该在哪里做到这一点?

1 个答案:

答案 0 :(得分:1)

是。为事件LockoutEvent创建一个监听器。

php artisan make:listener LockoutEventListener

在文件夹app/Listeners/LockoutEventListener下创建 LockoutEventListener.php 。然后在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(...);
        }
    }
}