Laravel Breezeを使ってユーザー認証を作る
はじめに
Laravel Breezeを使ってユーザー認証を作っていきます。
Laravel BreezeはLaravelを使用したユーザー認証システムのパッケージです。
Breezeがデフォルトで提供している機能:
1. ユーザー登録
2. ログイン
3. パスワードリセット
4. メール認証
5. アカウント編集
環境
PHP 8.x
Laravel 10.x
MySQL 8.x
tl;dr
phpとcomposerをインストールされていることを前提で進めていきます。
- 新規Laravelプロジェクトを作成する
- Breezeをインストールする
- Breezeの設定スクリプトを実行する
- DBのマイグレーション
- フロントエンドリソースのコンパイル
- ユーザー認証機能を確認する
- 日本語化する
新規Laravelプロジェクトを作成する
laravel-breeze
ディレクトリ内に作っていきます。
composer create-project --prefer-dist laravel/laravel .
Creating a "laravel/laravel" project at "./"
Installing laravel/laravel (v10.2.6)
...
Breezeをインストールする
➜ composer require laravel/breeze
./composer.json has been updated
Running composer update laravel/breeze
Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 0 updates, 0 removals
- Locking laravel/breeze (v1.25.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Downloading laravel/breeze (v1.25.0)
- Installing laravel/breeze (v1.25.0): Extracting archive
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
INFO Discovering packages.
......
85 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> @php artisan vendor:publish --tag=laravel-assets --ansi --force
INFO No publishable resources for tag [laravel-assets].
No security vulnerability advisories found.
Using version ^1.25 for laravel/breeze
Breezeの設定スクリプトを実行する
認証機能を試すだけなのでフロントはBladeを使います。
➜ php artisan breeze:install
┌ Which Breeze stack would you like to install? ───────────────┐
│ Blade with Alpine │
└──────────────────────────────────────────────────────────────┘
┌ Would you like dark mode support? ───────────────────────────┐
│ No │
└──────────────────────────────────────────────────────────────┘
┌ Which testing framework do you prefer? ──────────────────────┐
│ PHPUnit │
└──────────────────────────────────────────────────────────────┘
INFO Installing and building Node dependencies.
added 111 packages, and audited 112 packages in 31s
21 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
> build
> vite build
vite v4.4.11 building for production...
✓ 47 modules transformed.
public/build/manifest.json 0.26 kB │ gzip: 0.13 kB
public/build/assets/app-f88a056c.css 30.13 kB │ gzip: 5.85 kB
public/build/assets/app-87fccfb9.js 72.00 kB │ gzip: 26.73 kB
✓ built in 1.27s
INFO Breeze scaffolding installed successfully.
routes/web.php
にルート、app/http/controllers/auth
にコントローラー、resources/views/auth
にビューファイルを追加されました。
DBをマイグレーションする
ユーザーテーブルが作成されたことを確認します。
➜ laravel-breeze php artisan migrate
WARN The database 'laravel-breeze' does not exist on the 'mysql' connection.
┌ Would you like to create it? ────────────────────────────────┐
│ Yes │
└──────────────────────────────────────────────────────────────┘
INFO Preparing database.
Creating migration table ......................................... 58ms DONE
INFO Running migrations.
2014_10_12_000000_create_users_table ............................. 44ms DONE
2014_10_12_100000_create_password_reset_tokens_table ............. 49ms DONE
2019_08_19_000000_create_failed_jobs_table ....................... 37ms DONE
2019_12_14_000001_create_personal_access_tokens_table ............ 50ms DONE
フロントエンドリソースのコンパイル
➜ npm install
added 5 packages, and audited 112 packages in 5s
21 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
➜ npm run dev
> dev
> vite
Port 5173 is in use, trying another one...
VITE v4.4.11 ready in 368 ms
➜ Local: http://127.0.0.1:5174/
➜ Network: use --host to expose
➜ press h to show help
LARAVEL v10.28.0 plugin v0.8.1
➜ APP_URL: http://localhost
ユーザー認証機能を確認する
早速認証機能を試してみます。
認証周りのルートを確認します。
➜ php artisan route:list
GET|HEAD login ............................................................. login › Auth\AuthenticatedSessionController@create
POST login ...................................................................... Auth\AuthenticatedSessionController@store
POST logout .......................................................... logout › Auth\AuthenticatedSessionController@destroy
PUT password ............................................................ password.update › Auth\PasswordController@update
GET|HEAD profile ........................................................................ profile.edit › ProfileController@edit
PATCH profile .................................................................... profile.update › ProfileController@update
DELETE profile .................................................................. profile.destroy › ProfileController@destroy
GET|HEAD register ............................................................. register › Auth\RegisteredUserController@create
POST register ......................................................................... Auth\RegisteredUserController@store
POST reset-password ..................................................... password.store › Auth\NewPasswordController@store
GET|HEAD reset-password/{token} ............................................ password.reset › Auth\NewPasswordController@create
GET|HEAD sanctum/csrf-cookie ................................ sanctum.csrf-cookie › Laravel\Sanctum › CsrfCookieController@show
GET|HEAD verify-email ............................................ verification.notice › Auth\EmailVerificationPromptController
GET|HEAD verify-email/{id}/{hash} ............................................ verification.verify › Auth\VerifyEmailController
サーバーを起動します。
➜ php artisan serve
INFO Server running on [http://127.0.0.1:8000].
Press Ctrl+C to stop the server
/register
にアクセスしてみます。
以下の画面を表示されました。登録していきます。
登録されましたら自動的にログインされ、/dashboard
にリダイレクトされるとの設定ですね。
...
Route::get('/dashboard', function () {
return view('dashboard');
})->middleware(['auth', 'verified'])->name('dashboard');
ユーザー名をクリックするとプロフィールの編集とログアウトメニューがあります。
ログアウトをクリックするとルートディレクトリに遷移されます。
ページの右上のLog in
とRegister
が表示されます。
こちらのリンクはwelcome.blade.php
内にあります。
/login
にアクセスするとログインフォームが表示されます。
日本語化する
Breezeの日本語化したパッケージも用意されているので、Breezeをインストールした上でこちらのパッケージをインストールします。
➜ composer require askdkc/breezejp --dev
./composer.json has been updated
Running composer update askdkc/breezejp
Loading composer repositories with package information
Updating dependencies
...
Using version ^1.7 for askdkc/breezejp
breezejp
を使用します:
➜ php artisan breezejp
Laravel Breeze用に日本語翻訳ファイルを準備します
config/app.phpのlocaleをjaにします
GitHubリポジトリにスターの御協力をお願いします🙏 (yes/no) [yes]:
(ブラウザが開いてこのGitHubリポが開きます。スター頂けると励みになります)
Thank you! / ありがとう💓
日本語ファイルのインストールが完了しました!
公式のreadmeによりますと:
Laravelの言語設定やタイムゾーン設定が自動で行われます
Breezejpはphp artisan breezejpコマンド実行時にLaravelの設定ファイルconfig/app.phpのlocaleを自動でenからjaに変更します👍
ついでにTimezoneの設定も日本向けに直します🕛
具体的にはインストール時に自動でこうなりますので、特に何もしないでもOK👀✨💓
すごく便利ですね!
-'timezone' => 'UTC',
-'localel => 'en',
-'faker_locale' => 'en_US'
+'timezone' => 'Asia/Tokyo',
+'localel => 'ja',
+'faker_locale' => 'ja_JP'
追加された日本語はlang/
から確認できます:
日本語のパッケージを使わない場合、手動で翻訳ファイルを作成し指定することもできます。
lang/locales/ja
を参考してみてください。
終わりに
Laravel Breezeを使ったユーザー認証でした。
Discussion