おいキミ、彼はいったいどこで!?
おいキミ、彼はいったいどこで!?
2019.05.29

LaradockでLaravelの会員登録機能を実装+MailHogでメール書くテスト確認までやってみる

ハル

こんにちは、バックエンドエンジニアのハルです。

この記事では、前回に続き、Laravel入門者の私が学んだことを書いていきます。今回は、Laravelでログイン機能を用意し、楽しい気持ちになりたいと思います。

と言っても、Laravelではログイン機能の雛形が用意されているので、数コマンド実行すれば用意できるようです。では、そこに加えてMailHogでメールの送信テストまでできるようにしていきましょう。「あとは色々コードを書いて勉強するだけだな!」って気持ちになるところまでやっていきたいですね。

前回は、LaradockでLaravel開発環境を用意する記事を書きました。


この記事の続きから行っていきます。

まずは、起動するコマンドを実行します。

(ディレクトリの場所: laradock_project_name/laradock)

$ docker-compose up -d nginx mysql phpmyadmin

workspaceコンテナに接続しバージョンを確認します。

$ docker-compose exec workspace bash
# php artisan --version
Laravel Framework 5.8.10

今回Laravelのバージョンは5.8.10ですね。

「ブラウザで確認」でhttp://localhostを確認すると初期状態が確認できるかと思います。

データベースの準備

workspaceコンテナに接続した状態でartisanコマンドでマイグレーションを実行します。

# php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table

前回の記事でphpMyAdminを用意しているので
http://localhost:8080にアクセスしてログインします。

usersテーブルとpassword_resetsテーブルが用意されました。

見た目の部分も用意

見た目部分も用意していきます。こちらもコマンド実行で`view`・`controller`・`routes`を生成してくれます。

workspaceコンテナに接続して下記コマンドを実行します。

# php artisan make:auth

このコマンドで、

  • Controllers
  • views
  • routes

にファイルが生成されました。

ブランザでhttp://localhostを確認してみます。

右上に 『LOGIN』と『REGISTER』が追加されました。『REGISTER』をクリックすると、ユーザー登録画面に移動し登録ができます。

送信すると、ログイン後の画面に遷移します。

ローカル開発環境でのメールの確認方法

ログイン画面に『Forgot Your Password?』というボタンがありますね。パスワードリセットの機能があるなら、登録者のメールにパスワードをリセットするためのメールを送信したい。ですが、今はできないようです。メールテストツールのMailHogを起動してメールが確認できるようにしましょう。

下記コマンドで MailHog を追加で起動します。

$ docker-compose up -d mailhog

このコマンドを実行したら、ブラウザでhttp://localhost:8025にアクセスして送信したメールが確認できます。では、一度パスワードリセットをしてみて確認してみましょう。

http://localhostにアクセスしてログインしていた場合はログアウトしてください。ログアウトの状態で右上の『Login』をクリックし、『Forgot Your Password?』のリンクをクリックします。

パスワードのリセット申請フォームに移動します。パスワードをリセットしたい登録済みメールアドレスを入力して、送信します。

すると、MailHogで確認した際に、メール内容が確認できるようになっているはずです。

これでメール送信テストができる状態を確認できましたね! 心おきなく開発に集中できそうです。

今後は……

今回は、起動時に

docker-compose up -d nginx mysql phpmyadmin

というコマンドを実行していました。

MailHogというメールテストツールを使って `docker-compose up`する場合は
mailhogを追加して下記のようなコマンドを実行することになるかと思います!

docker-compose up -d nginx mysql phpmyadmin mailhog

一応、止め方は

docker-compose stop

です。

まとめ

今回はログイン機能を、Laravelで用意されているもので設置し、メールの送信テストができる状態まで作ってみました。

この後もまだまだ覚えることがいっぱいありそうですが、がんばるぞい。