При аутентификации пользователя, хочу передать в очередь отправку сообщений.
Метод контроллера:
namespace App\Http\Controllers;
...
public function login(Request $request)
{
$data = $request->validate([
'email' => ['required', 'email'],
'password' => ['required', 'min:5', 'max:10', 'confirmed']
]);
if (Auth::attempt($data, $request->input('remember'))) {
$request->session()->regenerate();
SendEmail::dispatch(Auth::user());
return redirect()->route('web.main');
}
return to_route('login')->withErrors(['fail-login' => 'Пользователь не найден']);
}
класс джоба, который выполняется в очереди и который собственно и отправляет письмо:
namespace App\Jobs;
...
class SendEmail implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $user;
public function __construct($user)
{
$this->user = $user;
}
public function handle(): void
{
event(new Registered($this->user));
}
}
Слушатель события "Registered" отправляет письмо, если пройдена проверка
if ($event->user instanceof MustVerifyEmail && ! $event->user->hasVerifiedEmail()) {
$event->user->sendEmailVerificationNotification();}
У меня отправки письма не происходит, т.к. не выполняется условия выше (пользователь не реализует контракт "MustVerifyEmail"). Почему так? Я ведь передал аутентифиц. пользователя из метода контроллера в методе dispatch()