【Laravel】Jetstreamで権限管理をする

Laravel

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」で作成しているため、拡張性が高い分、難易度が高くなっています。

環境

名称バージョン
Laravelv10.10
phpv8.1
Jetstreamv3.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」で認証画面を作成しようとしたら利用できなくなっていました。
バージョンが上がるにつれ便利になる反面、新バージョンも勉強していかないとバージョンアップもままならないと実感した今日この頃でした。

参考