Так как ваша User
Модель использует Illuminate\Auth\MustVerifyEmail
, вы можете переопределить метод sendEmailVerificationNotification
, который является методом, который уведомляет созданного пользователя путем вызова метода notify
и передает в качестве параметра новый экземпляр класса Notifications\MustVerifyEmail
.
Вы можете создать собственное уведомление, которое будет передано в качестве параметра $this->notify()
в методе sendEmailVerificationNotification
вашей модели User
:
public function sendEmailVerificationNotification()
{
$this->notify(new App\Notifications\CustomVerifyEmail);
}
И в своем CustomVerifyEmail
Уведомлении вы можете указать route
, через который будет выполняться проверка, и все параметры, которые она будет принимать.
Когда новый пользователь регистрируется, Illuminate\Auth\Events\Registered
Событие генерируется в App\Http\Controllers\Auth\RegisterController
, и это событие имеет слушателя Illuminate\Auth\Listeners\SendEmailVerificationNotification
, который зарегистрирован в App\Providers\EventServiceProvider
:
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
]
];
Этот слушатель проверяет, является ли $user
, который передается в качестве параметра new Registered($user = $this->create($request->all()))
в аутентификации Laravel по умолчанию App\Http\Controllers\Auth\RegisterController
, экземпляром Illuminate\Contracts\Auth\MustVerifyEmail
, который является чертой, которую Laravel предлагает использовать в модели App\User
, когда вы хотите предоставить проверку электронной почты по умолчанию и проверить также то, что $user
еще не проверено. Если все это пройдет, он вызовет метод sendEmailVerificationNotification
для этого пользователя:
if ($event->user instanceof MustVerifyEmail && !$event->user->hasVerifiedEmail()) {
$event->user->sendEmailVerificationNotification();
}
person
Yves Kipondo
schedule
24.09.2018