part.3公開日:2019/09/09最終更新日:2019/09/10前回はjwt認証を行うまでをやりました。今回はemailで仮登録を行い、本登録をしてログインするまでを行います。mailhog電子メールテストツールであるmailhogをインストールします。mailhogmailhogを立ち上げておきます。mailhogLaravelの.envファイルのメールの部分を以下のように変更します。config:cache.envファイルの設定を反映させます。アクセスし、mailhogのページが表示されるか確認してください。以下のようなページが表示されれば成功です。Usersテーブルにtokenを追加する仮会員登録で発行するURLtokenのフィールドを、usersテーブルに追加します。}}email_verified:認証済みかどうかの判定email_verify_token:email用トークン変更を反映します。migrate次に、認証メールに使用するviewと、tokenを返すクラスを作成します。以下にEmailVerification.phpが作成されます。このクラスにメール送信に使用するviewやメールタイトルなどの設定を記述することになります。内容を以下のように変更してください。}}Email用テンプレートの作成Emailの本文となるviewを作成します。pre_register.blade.phpを以下の内容で作成してください。pre_register.blade.phpサイトへのアカウント仮登録が完了しました。<br><br>以下のURLからログインして、本登録を完了させてください。href="{{url('register/verify/'.$token)}}">{{url('register/verify/'.$token)}}</a><br>このリンクをクリックすると本登録されるようになります。Userモデルの更新Userモデルの$fillableを以下のようemail_verified_atとemail_verify_tokenを追加してください。仮登録した後メッセージを表示するためのコンポーネントを作成します。resources/js/pages/auth/RegisterEmailMsg.vueを以下の内容で作成してください。'本登録が完了しました。ログイン画面からログインを行なってください。'メール認証に失敗しました。再度、メールからリンクをクリックしてください。'仮登録が完了しました。メールのリンクをクリックして本登録をしてください。'無効なトークンです。'すでに本登録されています。ログインして利用してください。Routerのurlでparamを受け取ってそれに対してメッセージを表示します。今はこの方法しか思いつかなかったのでもっといい方法があるのかもしれません。AuthController.phpの更新AuthController.phpをメール認証用に更新します。以下のように内容を変更してください。}}変更点を確認していきます。}本登録されているされている場合は/register/email/exitにリダイレクトします。仮登録の場合は、email_verifiedを1にして、email_verified_atに現在時刻を入れ、ステータスを更新します。EmailVerification($user));ユーザーを仮登録するときに、emailをbase64でエンコードしてemail_verify_tokenとして登録し、メールを送信しています。ルートの更新resources/routes/web.phpに以下をanyより前に追加してください。'AuthController@checkRegisterEmail')->name('equation');メールのリンクをクリックした後に、urlからトークンを取得し、データベースと照合して本登録を行います。以下を追加してください。仮登録後に表示するページのルートを定義します。}},],最後に/registerから登録された後にリダイレクトする設定を更新して終了です。/resources/auth.jsのルートを変更します。},登録後、/register/email/pre_registerにアクセスし、仮登録のメッセージを表示させます。実際に/registerから登録を行い、メールが送信されるかを確認します。一回、仮登録の状態でログインしようとすると、ログインできないと思います。そのメールのリンクを踏んで、本登録をしてみてください。このサンプルはgithubにおいてあります。