0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[解決済み]特定のIDを持つユーザーのみが閲覧可能なページ作成

Last updated at Posted at 2024-06-17

解決しました


勉強中の教材: Brad Schiff - Let's Learn Laravel: A Guided Path For Beginners
レッスン35

環境
Laravel 11.6.0
PHP 8.3.7

目的

Gateを使って、特定のIDが付けられたユーザーのみに閲覧許可されたページを作る。
今回の場合はidAdminが1のユーザーが対象であり、0のユーザーは非対象。

問題

教材ではAuthServiceProvider.phpにGateの設定をしていたが、Laravel11からはサービスプロバイダがAppServiceProvider.phpのみとなる。
Laravel11リリースノート - サービスプロバイダ

そのためAuthServiceProvider.phpは削除しAppServiceProvider.phpにGateの設定をしてみたところ、idAdmin1のユーザーでも閲覧拒否ページに飛んでしまった。
(ちなみにAuthServiceProvider.phpに設定をしても結果は変わらない。)

設定

web.php
Route::get("/admins-only", function() {
    if (Gate::allows("visitAdminPages")) {
        return "Only admin.";
    }
    return "You cannot view this page";
});
AppServiceProvider.php
Gate::define("visitAdminPages", function(User $user) {
    return $user->idAdmin === 1;
});

結果

idAdminが1または0どちらでも「You cannot view this page」と表示されてしまう。

余談

一つ前のレッスンでidAdmin1のユーザーのみ、他人の投稿を編集・削除できるように設定し、正しく動いた。
誤字脱字はGPTに確認済み。
色々調べていると、bootstrapディレクトリにproviders.phpがあるらしいのだが俺の環境にはない…。見様見真似で作ってみるがそううまくはいかず。
こちらを参考にAppServiceProvider.phpを変えてみるも結果はかわらず。↓

AppServiceProvider.php
Gate::define("visitAdminPages", function(User $user) {
    if ($user->idAdmin === 1) {
        return true;
    }
        return false;
});

解決(2024/06/18)

環境
Laravel 11.6.0
PHP 8.3.7

兄にいろいろ案を出してもらいながらなんとか解決しました。
具体的な解決方法は確定していないものの、おそらく

  • キャッシュクリア
  • Laravel再起動

この2つが解決方法だったのではないか…という感じでした。

Log出力、dd出力で原因を探っていくうちに「AppServiceProvider.phpが読み込めてなくね?」と言うところまで行きつき、キャッシュクリアと再起動という提案をもらってやったら…。
うおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお

ちなみになんやかんやいじりましたが、結局解決後のコードはこのままです。

ThankYouMerci

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?