Задать вопрос
@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()
  • Вопрос задан
  • 119 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@iljaGolubev
пользователь не реализует контракт "MustVerifyEmail"

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

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

Похожие вопросы