Подтверждение по электронной почте с помощью Fortify Laravel

Я использую Fortify без Jetstream для аутентификации. Я прочитал в документации о подтверждении электронной почты во время регистрации. Но как насчет подтверждения адреса электронной почты, когда пользователь меняет адрес электронной почты? Сложно ли реализовать с помощью этого пакета или в нем нет готового функционала для этого, и мне приходится делать это с нуля?

В пользовательской панели можно изменить имя пользователя, адрес электронной почты, телефон и img(добавлю позже):

      public function user_update(Request $request){

      $user = Auth::user();

      $user->name = $request->input('name')?$request->input('name'):Auth::user()->name;
      $user->email = $request->input('email')?$request->input('email'):Auth::user()->email;
      $user->phone = $request->input('phone')?$request->input('phone'):(Auth::user()->phone?Auth::user()->phone:NULL);

      $user->update();

      return redirect()->back();
    }

Маршрут:

      Route::post('/user-panel/user-update', [AdminController::class, 'user_update'])->name('user_update');

1 ответ

Решение

Когда вы включаете Features::emailVerification() особенность в fortify.php config вы получаете доступ к verified промежуточное программное обеспечение, которое подтверждает, что a проверил свой адрес электронной почты, утверждая, что поле в базе данных не является нулевым.

Итак, чтобы вызвать требование для проверки нового адреса электронной почты, если они меняют свой, вам нужно изменить значение email_verified_at поле для null если они изменят свой адрес электронной почты.

Вы можете написать эту логику самостоятельно, однако Fortify на самом деле предоставляет это из коробки. в app/Actions/Fortify в папке вы увидите файл с именем UpdateUserProfileInformation.php который делает именно то, что вам нужно, и реализует весь рабочий процесс проверки электронной почты, включая создание нового проверочного электронного письма в домене.

Возможно, вам придется немного изменить это для любых изменений, которые вы внесли в структуру по умолчанию user.

После этого все, что вам нужно будет сделать, чтобы использовать это, - это настроить свой <form> соответственно.

      <form action="{{ route('user-profile-information.update') }}" method="POST">
    @csrf
    @method("PUT")
</form>

Вы могли бы использовать url если вам не нравятся именованные маршруты, но конечный результат будет таким же.

Другие вопросы по тегам