Laravel SailとLaravel Breezeでさくっとログイン機能を実装する
Laravel Sailを利用するとLaravelのDocker開発環境が構築できます。
Laravel8からは更にLaravel BreezeやLaravel Jetstreamなどの認証機能やアプリケーションのスタータキットが提供されています。
これらを利用すると、ものすごく簡単にアプリケーションの開発がスタートできたので手順をまとめてみました。
Laravel Sailについて
Laravel Sailについてはこちらをご参考ください。
前提条件
Dockerがインストールされていること
> docker -v
> docker-compose -v
curlがインストールされていること
curl --version
インストールされていなかったらインストールします。
> brew install curl
> sudo apt install -y curl
Laravel Sailで開発環境構築
アプリケーション名(hoge_app
)は任意の名前にできます。
> cd 任意のディレクトリ
> curl -s https://laravel.build/hoge_app | bash
# 途中で端末にパスワードを求められるので入力
Please provide your password so we can make some final adjustments to your application's permissions.
Password:
環境変数ファイル(.env
)の設定を変更します。ここではMAIL_FROM_ADDRESS
を変更してLaravelからメール送信ができるようにしています。
-MAIL_FROM_ADDRESS=null
+MAIL_FROM_ADDRESS=hoge@example.com
sail
コマンドでDockerコンテナを起動します。
初回はイメージのダウンロードやビルドで時間がかかります。
> cd hoge_app
> ./vendor/bin/sail up -d
(略)
Creating hoge_app_selenium_1 ... done
Creating hoge_app_mysql_1 ... done
Creating hoge_app_meilisearch_1 ... done
Creating hoge_app_mailhog_1 ... done
Creating hoge_app_redis_1 ... done
Creating hoge_app_laravel.test_1 ... done
コンテナが起動したらブラウザで動作確認します。
- laravel: http://localhost/
- MailHog: http://localhost:8025/
Laravel Breezeのインストール
Laravel Breezeパッケージをインストールします。
> ./vendor/bin/sail composer require laravel/breeze --dev
> ./vendor/bin/sail php artisan breeze:install
> ./vendor/bin/sail npm install
> ./vendor/bin/sail npm run dev
パッケージがインストールできたらマイグレーションを実行します。
> ./vendor/bin/sail php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (43.49ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (27.58ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (30.88ms)
これでログインに関する画面やダッシュボードが実装されました。
ウェルカム画面をみると右上にリンクが追加されているのが確認できます。
Laravel Breezeの日本語化
このままだと英語表記となっていますので、日本語化対応してみます。
日本語化には公式ではありませんが下記リポジトリを利用させてもらいます。
Laravel-Lang/lang: List of 76 languages for Laravel Framework 4, 5, 6, 7 and 8, Laravel Jetstream and Laravel Fortify.
https://github.com/Laravel-Lang/lang
パッケージとして提供されているので、composer
コマンドでインストールできます。
インストール後、設定ファイルをコピーします。
> ./vendor/bin/sail composer require laravel-lang/lang:~8.0
> cp -r ./vendor/laravel-lang/lang/src/ja/ resources/lang/ja/
> cp ./vendor/laravel-lang/lang/json/ja.json resources/lang/
Laravelアプリの設定ファイル(config/app.php
)でタイムゾーンと言語設定を変更します。
- 'timezone' => 'UTC',
+ 'timezone' => 'Asia/Tokyo',
- 'locale' => 'en',
+ 'locale' => 'ja',
画面を確認するとほぼほぼ日本語化されていることが確認できます。
日本語化されていない箇所についてはresources/lang/ja.json
に設定を追加することで、日本語化できます。
- "You may not leave a team that you created.": "自身が作成したチームを離れることはできません。"
+ "You may not leave a team that you created.": "自身が作成したチームを離れることはできません。",
+ "Whoops! Something went wrong.": "おっと、サーバーで何か問題が発生しました。"
}
エラーメッセージに含まれる項目名を日本語にしたい場合、resources/lang/ja/validation.php
にあるattributes
に設定を追加することで、日本語化できます。
- 'attributes' => [],
+ 'attributes' => [
+ 'password' => 'パスワード',
+ ],
まとめ
Laravelの開発環境構築からログイン関連の画面追加をしてみましたが、設定ファイルを編集するだけで簡単に用意することができました。
また、./vendor/bin/sail
コマンドを利用することで、Dockerコンテナに入る必要がないことも個人的には感動がありました。
参考
Laravelの開発環境をDockerで構築しようとしたら公式さんがLaravel Sailって素敵ツールを提供してくれていました - Qiita
https://qiita.com/kai_kou/items/0e773aaf50698dd5a93f
Laravel-Lang/lang: List of 76 languages for Laravel Framework 4, 5, 6, 7 and 8, Laravel Jetstream and Laravel Fortify.
https://github.com/Laravel-Lang/lang
Laravel Breezeで「シンプルな」ログイン機能をインストール – console dot log
https://blog.capilano-fw.com/?p=8301
Laravel Jetstream の各種フォームを日本語化する – console dot log
https://blog.capilano-fw.com/?p=7930
Laravelの言語を日本語に変更 - Qiita
https://qiita.com/mitashun/items/160784ce352cf529f853
【Laravel】初めての認証(Laravel8でJetstreamを使う) - Qiita
https://qiita.com/manbolila/items/498aae00f3574c72f031