Gateで役割によってアクセス・表示制限をかける【Laravel入門講座】

Laravelセキュリティ

Laravelには制限をかける方法は色々ありますが、最も手っ取り早いのはGateを使う方法。

今回は GateuserHasRole関数を設定して、役割ごとに表示やアクセス制限をかける方法を解説します。

アクセス制限が適切にされているかどうかで、サイトの信頼度は180度変わってきます。

しっかり制限をかけて、サイトの信頼性を上げていきましょう。

じゅんこ
じゅんこ

Gate=門です。

許可がある人にだけ門が開かれるってイメージですね。

LaravelでGateでアクセス制限をかける方法【Laravel入門講座】

手順は次のとおり。

  1. UserモデルでuserHasRole関数を設定する
  2. Gateを設定する
  3. ルート設定にアクセス制限をかける
  4. ビューファイルに表示設定をかける

なお、最初にRole(役割)モデルを作り、Userモデルとリレーションをはっておく必要があります。

この部分については、別記事で解説しているので、参考にしてください。

今回はすでに、次のようなRoleテーブルがあるとします。

adminが管理者で、userが通常のユーザーです。

UserとRoleは belongToManyリレーションでつながっており、次の中間テーブルがあるとします。

UserモデルでuserHasRole関数を設定する

まず、Userファイルを開き、次のようにuserHasRole関数を設定します。

Gateを設定する

app/Providersの中のAuthServiceProvider.phpを開きます。

上部に次のuse宣言を入れておきます。

そのうえで、次のようにisAdminゲートを設定します。

先ほどのuserHasRole関数を使い、ユーザーがadminかどうかで制限をかけるようにしました。

もしadmin以外の役割を使って制限をかけたいなら、役割名は、適宜変更してください。

ルート設定にアクセス制限をかける

これで設定は終わり。

設定した制限をかけたいルート設定には、次のように ->middleware('can:isAdmin') 入れます。

管理者ではない人がアクセスしようとすると、次のようになります。

ビューファイルに表示設定をかける

ビューファイルにも制限をかけられます。

たとえば管理者だけにボタンが表示されるようにするには、blade.phpファイルに次のようにisAdminゲートを挿入します。

※ちなみに、userHasRole関数だけでも、可能だったりはします。

その場合、次のように書きます。

コントローラーに制限をかける

最後にコントローラーに制限をかける方法を紹介します。

制限をかけたいコントローラーファイルの上に、下記のuse宣言をいれておきます。

isAdminゲートを入れたい部分には、次のようにします。

これで、profile.editページはadminユーザーしかアクセスできなくなりました。

他のユーザーがアクセスしようとすると、また403 unauthorized画面が出てきます。

なおGateを使って【アクセスできる】方法を説明しましたが、Gateで【アクセスできなくする】ことも可能です。

その場合には、Gate::deniesを使います。

じゅんこ
じゅんこ

denyは否定するという意味で、deniesは三人称単数形ですね。

adminはprofile.editページにできないようにするには、次のように書きます。

aminがprofile.editページを開こうとすると、404 not found が表示されます。

さいごに

Gateを使って、ルート設定・ビューファイル・コントローラーに制限をかける方法を紹介しました。

アクセス制限は地味ながら、使いやすく、安心できるサイトに不可欠な機能。

そしてLaravelでは、色々な制限が可能です。

関連記事でも解説しているので、他の方法もチェックしてみてくださいね。

Laravelセキュリティ Laravel入門講座

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

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

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

【無料プレゼント】

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

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

詳細はこちらをクリック

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

【AWS関連・Webアプリ開発・生成AIのAPI活用のご相談承ってます】
お気軽にお声がけください。
御社にとって、最善の方法をご一緒に考えてまいります。
Zoomミーティング実施中。サンプルアプリご利用可能です。

お問合せフォーム

Laravelの本を書きました。


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

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

書籍の詳細を見てみる

Laravelの本を書きました。


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

最新版Laravel11用のサポートガイドご用意しています。

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

書籍の詳細を見てみる
Twitter始めました。
40代からプログラミング!
タイトルとURLをコピーしました