Webサイトで管理者や一般ユーザのようにロール管理(権限管理)がしたい!!
そんな理想をかなえてくれるのがJetstreamになります。
今回は導入部分を紹介します。
Jetstreamとは
認証機能を実現できるスターターキットになります。
Laravel8.x以降にスターターキットに追加となった認証パッケージ。
Lravel5.xの「make:auth」、Laravel6~7の「laravel/ui」では簡易的な認証しかできませんでしたが、Jetstreamではチーム管理、2要素認証などを標準で実装できるようになりました。
ただし、設定が複雑なため公式ではBreezeで慣れてからJetstreamを利用することを進めています。
BreezeやFortifyのような認証パッケージも出ていますので、使いやすさや利用する機能で使い分ければよいと思います。(BreezeやFortifyにロール管理はないため、自作する必要があります。)
JetstreamにはLivewireとInertiaの2つが用意されておりそれぞれの違いは以下になります。
・LivewireはPHP+Bladeで実装
・InertiaはVue.jsで実装
また、JetstreamとBreezeではCSSパッケージを「Tailwind」で作成しているため、拡張性が高い分、難易度が高くなっています。
環境
名称 | バージョン |
---|---|
Laravel | v10.10 |
php | v8.1 |
Jetstream | v3.2.4 |
導入手順
composerでJetstreamをダウンロードします。
composer require laravel/jetstream
次にjetstreamをインストールするのですが、チーム機能も利用したいので –teams オプションを付けます。
–dark オプションでダークモードにも変えられるようです。
php artisan jetstream:install inertia --teams
DBのテーブルを作成するためにマイグレーションを実行します。
php artisan migrate
http://xxx.xxx.xxx.xxx/login にログインページが作成されます。
http://xxx.xxx.xxx.xxx/register にユーザ登録ページが作成されます。
ユーザ登録してログインするとチーム機能付きのダッシュボードが表示されます。
ServiceProviderで権限を追加することができます。
デフォルトでAdministratorとEditorロールがありますので、create,read,update,delete権限を割り当て、新規にロールを追加するなどカスタマイズすることができます。
app/Providers/JetstreamServiceProvider.php
protected function configurePermissions(): void
{
Jetstream::defaultApiTokenPermissions(['read']);
Jetstream::role('admin', 'Administrator', [
'create',
'read',
'update',
'delete',
])->description('Administrator users can perform any action.');
Jetstream::role('editor', 'Editor', [
'read',
'create',
'update',
])->description('Editor users have the ability to read, create, and update.');
}
最後に
久しぶりにLaravelを構築して「make:auth」で認証画面を作成しようとしたら利用できなくなっていました。
バージョンが上がるにつれ便利になる反面、新バージョンも勉強していかないとバージョンアップもままならないと実感した今日この頃でした。