Laravel Policyでログインユーザーの投稿だけ表示する方法【初心者のLaravel講座】

Laravelセキュリティ

LaravelにはPolicyという機能があり、閲覧、編集・削除を行う権限を簡単に設定できます。

Policyを使って、各ユーザーの画面に、自分が投稿したものだけを表示する方法を解説していきます。

Laravel Policyでログインユーザーの投稿だけ表示する方法

今回実施したいこと

  • ログインしたユーザーは、フォームから質問ができる
  • 投稿一覧画面には、ログインユーザーの質問 (Inquiry) のみ表示させる

手順は次のとおりです。

① ポリシーファイルを作成

php artisan make:policyでポリシーファイルを作ります。

php artisan make:policy ポリシー名 –model=モデル名

このとき、ポリシーの名前は、ポリシーをかけるモデル (Post) と同じ名前にしておきましょう。

同じ名前だと、Laravelがモデルとポリシーの関係を自動で見つけてくれるので手間いらず!

名前を変えると、App/AuthserviceProviderに登録しなきゃいけません。

② ポリシーファイルに記述する

app/Policies に新しくポリシーファイルができています。

今回は閲覧制限をかけるので、public function view に下記の一文を入力します。

キャプチャしたコードは次の通りです。

コードの意味
user id が inquiryテーブルの user_id と同じ場合のみ、表示をしてください。

③ bladeファイルに記述する

実際に閲覧制限をかけたい部分を次のコードで囲みます。

なお省略して、次のように書くこともできます。

foreachで記述した部分に閲覧制限をかけるには、@foreachの後にコードをいれましょう。

実際のコード例は次のとおり。

これで、ログインしたユーザーが投稿した質問のみ表示できるようになります。

作成したポリシーは他の場所でも使えます。

さいごに

policyは使いまわせるし、簡単なので好きです。

なおLaravelには他にもいろいろな制限のかけ方があります。

ミドルウェアを使った方法など、別記事で解説しているので、あわせて参考にしてください。

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をコピーしました