@dch3

Как передать аутентифицированного пользователя в job очереди Laravel?

При аутентификации пользователя, хочу передать в очередь отправку сообщений.
Метод контроллера:
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()
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
@iljaGolubev
пользователь не реализует контракт "MustVerifyEmail"

Ну так реализуйте.
class User extends Authenticatable implements MustVerifyEmail
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы