Подтверждение по электронной почте с помощью 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
если вам не нравятся именованные маршруты, но конечный результат будет таким же.