【Laravel8】JetStreamで新規登録時にパスワード確認をする

こんにちは。今回はJetStreamのメールアドレス確認機能を紹介します。

メールアドレス確認機能とは

ユーザー登録機能でユーザーを作成した際、登録したメールアドレスに確認メールを送り本人確認を行う機能のことです。メールに記載のリンクをクリックするまでユーザー登録が完了しないので、システムにログインすることはできません。現在では多くのWEBサービスがこの認証形式を取っているので、世の中の主流になっています。JetStreamにはこの機能が予め備わっていますが、デフォルトでは無効になっています。有効にすることで簡単に使い始めることができます。

メールアドレス確認機能を有効化する

認証機能はFortifyで実装されていますので、Fortifyの設定ファイルでメールアドレス確認機能を有効化します。config/fortify.phpのFeatures::emailVerification()のコメントを外してください。

    'features' => [
        Features::registration(),
        Features::resetPasswords(),
        Features::emailVerification(), // コメントを外します
        Features::updateProfileInformation(),
        Features::updatePasswords(),
        Features::twoFactorAuthentication([
            'confirmPassword' => true,
        ]),

次にUserモデルにMustVerifyEmailインターフェースを実装します。useは元々定義してあるので、implements MustVerifyEmailを記述します。

use Illuminate\Contracts\Auth\MustVerifyEmail;

class User extends Authenticatable implements MustVerifyEmail
{
    ...
}

以上2点の作業でメールアドレス確認の有効化は完了です。

メールアドレス確認を試す

早速メールアドレス確認を試してみましょう。http://localhost:8000/registerにアクセスし、ユーザーを新規登録します。登録ボタン押下後、以下の画面が表示されます。この時点で登録したユーザーのアドレス宛にメールアドレスが送信されています。

メールの文面は以下のようになっています。[Verify Email Address]をクリックします。

クリックするとシステムにログインし、ダッシュボード画面に遷移します。これで認証は完了です。

メール確認済かどうかはUserモデルのemail_verified_atに日付が入っているかどうかで判断しています。日付が入っていれば確認済となります。

まとめ

いかがでしょうか。非常に簡単にメールアドレス確認機能を実装することができました。JetStreamはこういう細かな機能なども提供されているので、とても行き届いている感じがして良いですね。

Laravel

Posted by kobainmac