環境
- Laravel 8.x
- Voyager 1.4
参考:https://voyager-docs.devdojo.com/customization/custom-guard
ここにいい感じの例が乗ってます。
大体これの翻訳と追記。
動機
デフォルトだとVoyagerはusersテーブルで管理者ユーザーを管理する。
Jetstreamなどを入れていて、同じユーザーテーブルで管理するのが嫌だったのでVoyagerのデフォルトで設定されているテーブルを変更する
今回は usersテーブルをadminsテーブルに変えます。ドキュメントと一緒。
変更手順
1、adminsテーブルを作る
artisanでModelとmigrationファイルを作る
1 |
$artisan make:model Admin -m |
カラムをいろいろ設定
@migrations/create_admins_table.php
1 |
|
DB作る
1 |
artisan migrate |
2、AdminモデルでVoyagerを継承する
モデル側もAdminモデルでVoyagerを読むように
@Models/Admin.php
1 |
|
Voyagerを既にインストールしてると、Userモデルで継承しちゃってるので外しとく
@Models/User.php
1 |
|
3、コンフィグ設定でguardを登録する
admin
というguardを作って、
@config/auth.php
1 |
'guards' => [ |
admin
というproviderも作る
1 |
'providers' => [ |
** 注意 ** ドキュメントでは App\Admin::class
になっているが(2021/06/21現在)、Laravel 8からモデルのデフォルトのnamespaseがApp\Models
になってるので対応させておく。
Voyagerに新しいguardを伝える
@AppServiceProvider.php
1 |
public function register() |
以上で設定完了。
新しくAdminモデルにユーザー作ってログインしてみる
1 |
php artisan voyager:admin your@email.com --create |
でCLIで初期ユーザー登録したときに、adminsテーブルに保存されてることを確認しましょう
なお、user-breadはuserテーブルのBREADなので(それはそう)
必要ならadminsテーブル用のBREADを作ること。
参考
https://voyager-docs.devdojo.com/customization/custom-guard
https://github.com/the-control-group/voyager/issues/2568