0

我正在使用没有 Jetstream 的 Fortify 进行身份验证。我在注册时阅读了有关电子邮件验证的文档。但是当用户更改电子邮件地址时,确认电子邮件地址呢?使用这个包很难实现还是没有现成的功能,我必须从头开始?

在用户面板中可以更改用户名、电子邮件、电话和 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');
4

1 回答 1

2

当您Features::emailVerification()在配置文件中启用该功能时,fortify.php您可以访问中间件,该中间件通过断言数据库中的字段不为空verified来确认 auser已经验证了他们的电子邮件。email_verified_atuser

因此,要触发user验证新电子邮件的要求,如果他们更改了他们的电子邮件,您要做的是将email_verified_at字段的值更改为null是否user更改了他们的电子邮件地址。

可以自己写出这个逻辑,然而,Fortify 实际上开箱即用地提供了这个。在该app/Actions/Fortify文件夹中,您将看到一个名为的文件,该文件UpdateUserProfileInformation.php完全符合您的要求,并实施了整个电子邮件验证工作流程,包括生成新的验证电子邮件到user.

对于您对 default 的结构所做的任何更改,您可能需要稍微改变它user

此后,为了使用它,您需要做的就是<form>适当地配置您的。

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

url如果您不喜欢命名路由,则可以使用,但最终结果将是相同的。

于 2021-01-23T11:06:14.183 回答