share facebook facebook facebook twitter twitter menu hatena pocket slack

2021.03.22 MON

Laravel SailとLaravel Breezeでさくっとログイン機能を実装する

甲斐 甲

WRITTEN BY 甲斐 甲

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

インストールされていなかったらインストールします。

mac

> brew install curl

Linux/Windows(WSL)

> 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からメール送信ができるようにしています。

.env

-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 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)でタイムゾーンと言語設定を変更します。

config/app.php

-    'timezone' => 'UTC',
+    'timezone' => 'Asia/Tokyo',
-    'locale' => 'en',
+    'locale' => 'ja',

画面を確認するとほぼほぼ日本語化されていることが確認できます。

日本語化されていない箇所についてはresources/lang/ja.jsonに設定を追加することで、日本語化できます。

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に設定を追加することで、日本語化できます。

resources/lang/ja/validation.php

-    'attributes' => [],
+    'attributes' => [
+        'password' => 'パスワード',
+    ],

まとめ

Laravelの開発環境構築からログイン関連の画面追加をしてみましたが、設定ファイルを編集するだけで簡単に用意することができました。
また、./vendor/bin/sailコマンドを利用することで、Dockerコンテナに入る必要がないことも個人的には感動がありました。

参考

Laravelの開発環境をDockerで構築しようとしたら公式さんがLaravel Sailって素敵ツールを提供してくれていました – Qiita
https://cloudpack.media/55966

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

元記事はこちら

Laravel SailとLaravel Breezeでさくっとログイン機能を実装する

甲斐 甲

甲斐 甲

2018/7にJOIN。 最近の好みはサーバレスです。なんでもとりあえず試します。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。