Laravel Jetstreamチーム版でユーザーの役割と権限を簡単に設定する

Laravel Jetstream

Laravel JetstreamのTeam版では、ユーザーの役割や権限が簡単に設定できる機能が付いています。

roleやpermissionの設定を手軽に搭載できます。

Jetstreamチーム版のインストール・設定方法と、役割によってページの動きを変える方法を紹介していきます。

Jetstream チーム版を設定

まずはインストールから。

なおJetstreamには Livewire版とinertia版がありますが、本記事ではLivewire版を使用します

inertia版は、Vue.js を使うエディションです。

Junko
Junko

インストール時に待ち時間はありますが、エラー等なければ、10分程度で できちゃいます。

Laravel9 Jetstream チーム版のインストール手順

①Laravelの新プロジェクトを jetstream付きでインストールします。

②プロジェクト内で、下記コマンドを実行して、Jetstreamをインストールします。

③ 次に下記コマンドを実行します。

④ npm install と npm run devを実行します。

⑤データベースを新たに設置したい場合は、phpMyAdminにログインして新規データベースを作成します。

データベースの名前をLaravelの.envファイルの【DB_DATABASE= 】に入力してください。

⑥マイグレーションを実施

これで準備完了です。

詳しくはこちらの記事も参考にしてください。

Jetstream Team版インストール後のチェック

インストール後、phpMyAdminのデータベースをチェックしてみると、8個もテーブルができています。

ちなみにチーム版でない場合は、インストール後に作成されているテーブルは次の6個。

インストール後、新規プロジェクトをブラウザで確認すると、次のようになっています。

右上の【Register】でユーザーを登録し、次に【Login】します。

ログイン後の画面はこちら。

赤い部分が、通常版にはないチーム版だけのメニュー。

【Team Setting】、【Create New Team】といった項目がありますね。

【Team Setting】では、次のように、チームに加えたいメンバーのEmailと役割を設定できます。

なお、ひとりのユーザーが異なる役割で、複数のチームに属することもできます。

たとえばユーザーAさんが、BlogAチームではAdmin, BlogBチームではEditor, Blog CチームではCheckerの役割を果たすといったことが可能です。

Jetstream チーム版 の役割・権限変更

チーム版では、手軽に役割を増やしたり、権限を変えたりできます。

役割と権限の変更をするには、app/Providers/JetstreamServiceProvider.phpを編集します。

デフォルトでは、JetstreamServiceProvider.phpには、上記のようにAdministratorとEditorがあります。

サイト上では、次のように表示されます。

ここに次の2点の変更を加えてみます。

  1. 【Editor】ができることの中から、【update】を削除
  2. 【update】権限がある【Checker】という役割を追加

この場合、JetstreamServiceProvider.phpを次のように書き替えます。

赤枠が【Editor】の①、青枠が②の部分の設定変更です。

書き換えた後にページを表示させると、【Editor】の役割説明が変わり、さらに【Checker】という役割が増えていることを確認できます。

hasTeamPermissionで役割・権限ごとに動きを変える

役割や権限を設定したら、これに合わせてサイトを作りたいですよね。

Jetstream チーム版では、こういった目的のためにhasTeamPermissionメソッドが使えます。

hasTeamPermission メソッドとは

Laravel JetStreamの公式ページには、hasTeamPermissionについて次のように書かれています。

(分かりやすくするため、表現はやや変えています。)

ユーザーの権限(permissions) は、hasTeamPermissionメソッドで確認できます。

ユーザーの役割(roles)を調べる必要はありません。

つまり役割とは、ひとつずつの権限(Permissions)を分類するための概念といえます。

*参考元:Laravel Jetstream / Teams

【役割(Role)】ベースではなく、【権限(Permission)】に応じて制限をかける、ということですね。

ここは、大事なポイントです。

hasTemPermissionメソッドで権限ごとに見えるページを変える

では実際にテストで使ってみます。

【/test】ページを、先ほど作成した【Checker】の役割をもつユーザーしか見れないように設定します。

【Checker】は、updateの権限を持っていましたよね。

一方【Editor】には、update権限はありません。

最初にルート設定を作っておきます。

routes/web.phpファイルに、下記を入れます。

Testコントローラーには、hasTeamPermissionを使って、次のようにコードをいれます。

コードの意味

  • ログインしたユーザーの現在のチームを $teamとする。
  • もしユーザーが現在のチームで【update】権限を持っていたら、testページを表示
  • そうでなければ、ダッシュボードにリダイレクトする。

実際にログインして【 /test】ページを表示させようとすると、次のことが起こります。

  • 【update】権限がある【Checker】の役割が割り振られたユーザーには、【/test】が表示可能
  • 【update】権限がない【Editor】の役割をもつユーザーは、リダイレクトされる

よかったら設定を変えたりして、実際に試してみてくださいね。

なお上記のコードはログインしていないユーザーに対しては、エラーになります。

実際に使う場合には、ログインしていない場合の動作も指定する必要があります。

さいごに

今回のまとめ

  • Jetstreamのチーム版はLiveWireインストール時に --teams といれる
  • チーム版ではひとりのユーザーが異なる役割で、複数のチームに所属可能
  • 役割や権限の設定変更はJetstreamServiceProvider.phpで行う
  • hasTeamPermissionを使うと、権限に応じた制限が設定できる

なおチーム版でなくとも、Jetstreamによって高度な認証機能が使えるようになります。

二段階認証や同時セッションチェックなどJetstreamの基本機能は下記にまとめてあるので、まだ知らなかったら、併せて読んでくださいね。

Jetstreamの機能については関連記事にまとめてあるので、併せて参考にしてくださいね。

じゅんこ
じゅんこ

色々便利な機能満載です♪

Laravel Jetstream Laravel認証機能
Laravel Jetstream Team版のデモサイト作りました♪
Laravel9 Jetstream Livewire Team版で作成しております。
https://faq.createmore-prj.com/register


「二段階認証ってどんなふうにかかるんだろ」
と思ったら、試してくださいね。

【Laravelの教科書・プレゼント】

Junko
Laravelの使い方を覚えたい!と思ったら、ぜひ、役立ててほしいです。 基礎編は無料でプレゼント中です♪
ひつじプログラマ
会員制サイトをいちから作っていくよ。ボタンをクリックして詳細を見てね。
Laravelの教科書の詳細を見る

最新のLaravel10版テキストに加え、Laravel8版・Laravel9版もご用意しています♪

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中! 会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック

最新のLaravel10版テキストに加え、Laravel8版・Laravel9版もご用意しています♪

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。
Laravel10対応。Laravel11サポートガイドもご用意しています。詳しくは下記ボタンをクリック♪

書籍の詳細を見てみる

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravel10対応

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。

書籍の詳細を見てみる

 

Laravelの教科書限定コミュニティ【Laravelの教科書ラボ】はじめました。
デプロイ講座付。StripeやChatGPT連携など過去10回分のセミナー動画視聴可能。

Laravel実践スキルをのばしたい方におすすめです。

ラボの案内を見てみる

Twitter始めました。
40代からプログラミング!

コメント

  1. 溝端 雅浩 より:

    PHP Laravel初心者です。Jetstreamの解説は、とても参考になりました。
    Team版なので、ユーザが所属しているチームによって遷移する画面を変えたいなと思い、
    色々調べていますが、日本語解説ドキュメントが少なく苦戦しています。
    Team版ならではの使い方のノウハウも記事にしていただけると助かります。

    • Junko Junko より:

      溝端さん、
      コメントとリクエスト、ありがとうございます!
      Jetstreamは高機能ですが、分かりにくいところがありますよね^^;
      また記事を書いていきたいと思います。

タイトルとURLをコピーしました