ラボ > Laravel、Lumen:ユーザー認証関連

laravel ユーザー管理(Breeze)

laravelでユーザー管理をしたいのでBreezeってヤツをインストールしてみる

作成日:2022-12-16, 更新日:2022-12-22

基本

▼私の環境
WIN+Docker+Ubuntuでlaravelを使うための作業メモ
→これがlaravel sail 8っぽい。「laravel sail」の「8」なのか「laravel 8」の「sail」なのか…よくわからん

ユーザー管理

laravelでのユーザー管理は「Breeze」「Jetstream」などを使うらしい(※他にもあるらしいがこの二つがメジャーっぽい)
laravel 8からは「Jetstream」になるらしいが要望があったのか別途「laravel 8」用の「Breeze」が増えたとか。

ざっくり調べると「Breeze: 簡単、自由度低い」「Jetstream: 難しい、自由度高い」みたいな感じっぽい

ひとまず「Breeze」のほうで試してみる

目標

いろんなサイトで記載されている「Breeze」ってヤツをインストール
で、ユーザー登録+ログインでダッシュボードを見てみる

Breezeのインスト~ユーザー登録・ログインまで

  1. composerでBreezeパッケージのインストール
  2. artisanでBreezeのインストール
  3. ブラウザで確認

composerでBreezeパッケージのインストール

▼UbuntuからLaravelの「composer.json」のあるとこにカレントを移して実行

$ sudo ./vendor/bin/sail composer require laravel/breeze --dev

途中で出たエラーたち

途中パーミッションエラーが出まくる…最初は調べてたけど面倒になって無条件で「chmod 777」に変更していった
※ローカル環境だし外からのアクセスを許可する予定が無いので細かいことは気にしない

▼困ったら魔法の呪文替わり…コイツを唱えてもダメだった

$ sudo ./vendor/bin/sail composer dump-autoload

エラーたち

まず「composer.json」

./composer.json is not writable.

次に「composer.lock」

file_put_contents(./composer.lock): Failed to open stream: Permission denied

続けて「vendor/laravel」

/var/www/html/vendor/laravel/breeze does not exist and could not be created.

いっぱいでてきたのが「vendor/composer」の各ファイルたち

file_put_contents(/var/www/html/vendor/composer/autoload_namespaces.php): Failed to open stream: Permission denied

最後に「bootstrap/cache」

The /var/www/html/bootstrap/cache directory must be present and writable.

artisanでBreezeのインストール

$ ./vendor/bin/sail php artisan breeze:install

途中で出たエラーたち

▼出てきたエラー

 mkdir(): Permission denied

  at vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:632
    628▕             return @mkdir($path, $mode, $recursive);
    629▕         }
    630▕
  ➜ 631▕         return mkdir($path, $mode, $recursive);
    632▕     }
    633▕
    634▕     /**
    635▕      * Move a directory.

対象となるPATHが分からん…ネットで調べてみても対象のPATHは分からず
…しょうがないので「vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php」の630行目に「echo $path;」を記載して再実行

▼出てきたPATH

/var/www/html/app/Http/Controllers/Auth

「app/Http/Controllers/Auth」はまだなかったので「app/Http/Controllers」に権限付与して再実行
→同じエラー。再度「echo $path;」を仕込んで再実行すると今度は「/var/www/html/app/Http/Requests」。同様に権限を付与・再実行

この後も同様にエラーがでるのでひたすら「調べる・権限付与・再実行」を繰り返す

▼途中困ったエラー

require(/var/www/html/routes/auth.php): Failed to open stream: No such file or directory

→空ファイルを用意して権限付与

ルーティング

「routes/web.php」から「routes/auth.php」を「require」して対応してくれるみたい

ブラウザで確認

ブラウザで「http://localhost」にアクセスするとヘッダのナビメニュー(「Log in」と「Register」)が右上に追加される
※マイグレート済みだったので「Register」はエラーもなく実行された。

マイグレートをしていない場合

$ ./vendor/bin/sail php artisan migrate

xxxx.blade.phpの中にある「{{ __('〇〇〇') }}」たちを日本語にする

直接「xxxx.blade.php」を書き換えるのが手っ取り早いけど辞書ファイルみたいなものを用意してやる場合

config/app.php

// 'locale' => 'en',
'locale' => 'ja',

追加:resources/lang/ja.json

▼「{{ __('Dashboard') }}」「{{ __('You're logged in!') }}」を日本語化

{
    "Dashboard": "だっしゅぼーど",
    "You're logged in!": "ログイン中"
}

※他、同様

メモ

やりたいのはユーザー管理でユーザー登録や認証だけじゃないんだよなぁ…

  • Breezeでユーザー管理用に何か用意されているのかはまだ不明
  • ユーザー情報に別の情報を追加する方法が用意されているかは不明

→「Jetstream」のほうを使う必要があるのかも不明

Fortify

「Breeze」「Jetstream」以外にもいくつかあるけど「Fortify」ってヤツはバックエンドのみ提供しているらしい
UIを自前で用意するなら「Fortify」ってのを使うのが良いらしい
→アレコレ調べながらUIを修正するなら「Fortify」を使ってUIは自前にするのが早そうな気がする