Изменение класса «VerifyEmail» для настраиваемого параметра в проверочной ссылке в почте для метода verifyUrl () в проверочном письме в laravel 5.7

письмо с подтверждением, которое поставляется с laravel 5.7. Как и где мне нужно его поменять? Я искал по всему Интернету, но поскольку это новая функция в 5.7, я не смог найти ответа. Не могли бы вы мне помочь? Заранее спасибо.

в основном этот класс находится в Illuminate \ Auth \ Notifications

я хочу переопределить один из методов:

 class VerifyEmail extends Notification
        {
          // i wish i could override this method
           protected function verificationUrl($notifiable)
            {
             return URL::temporarySignedRoute('verification.verify', Carbon::now()->addMinutes(60), ['id' => $notifiable->getKey()]);
            } 
        }

person jay thanki    schedule 23.09.2018    source источник


Ответы (1)


Так как ваша 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
comment
работает нормально! после внесения вышеуказанных изменений для настраиваемой проверки электронной почты @YvesKipondo - person jay thanki; 25.09.2018