Я хочу, чтобы система входа в Laravel отправляла мне электронные письма после входа на веб-сайт. Вот мой метод authenticated
из LoginController
.
if ($user->hasTwoFactorAuthenticatedEnabled()) {
auth()->logout();
$request->session()->flash('auth', [
'user_id' => $user->id,
'using_sms' => false,
'remember' => $request->has('remember')
]);
if ($user->two_factor_type == 'sms') {
$code = ActiveCode::generateCode($user);
// Todo Send Sms
$request->session()->push('auth.using_sms', true);
}
return redirect(route('2fa.token'));
}
$user->notify(new LoginToWebsiteNotification());
return false;
Как видите, я добавил $user->notify(new LoginToWebsiteNotification());
и LoginToWebsiteNotification
удержания:
class LoginToWebsiteNotification extends Notification
{
use Queueable;
public function __construct()
{
//
}
public function via($notifiable)
{
return ['mail'];
}
public function toMail($notifiable)
{
return (new MailMessage)
->subject('u Loggedin')
->view('emails.login-to-website');
}
public function toArray($notifiable)
{
return [
//
];
}
}
Проблема здесь в том, что после входа в систему ничего не отправляется на адрес электронной почты пользователя. Обратите внимание, что настройки почты работают нормально, и я проверял их при регистрации нового пользователя на сайте. Поэтому, если вы знаете, почему этот метод уведомления отправляет мне электронное письмо, пожалуйста, дайте мне знать; Я был бы очень признателен за любую идею от вас, ребята.
storage/logs/laravel.log
на наличие ошибок? Может 2FA включен и возвращается раньше? - person codedge   schedule 09.12.2020use Notifiable;
в свою модельUser
? - person Dimitri Mostrey   schedule 10.12.2020$user->hasTwoFactorAuthenticatedEnabled()
оценивается как true, строка для $user-›notification никогда не достигается, выполнение метода завершается до этого внутри if() при возврате redirect(route('2fa.token')) - вы проверяли это - вы можете простоdd($user->hasTwoFactorAuthenticatedEnabled())
и проверить - person Donkarnash   schedule 13.12.2020