Изменение класса «VerifyEmail» для настраиваемого параметра в ссылке для подтверждения в почте для метода verifyUrl () в сообщении для проверки в laravel 5.7. - PullRequest
0 голосов
/ 23 сентября 2018

подтверждающее письмо, которое идет с 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()]);
            } 
        }

1 Ответ

0 голосов
/ 24 сентября 2018

Поскольку ваша 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();
}
...