Laravelの認可を解説|Gateについて言及

認可とはどんな概念でしょうか。
認可とは、特定の行動に対しての権限の制御をする設定です。

認可には、Gate・Policy、2つの方法があります。

Gateで設定する場合

・App\Providers\ AuthServiceProvider に定義を記述
・認可したい箇所でGateファザードを用いて制御

Gateを App\Providers\ AuthServiceProvider で定義する

public function boot()の中で定義していきます。

Gateの名称を設定:chat-view
Gateが認可される条件を設定:if文の中がtrueの場合に返り値として return true;を返します。
※引数$userは、認証されているユーザー情報が入ってきます。

         Gate::define('chat-view', function (User $user, $chatRoom) {
            if ($chatRoom->apply_user_id === $user->id) {
                return true;
            }
        }); 

認可したい箇所でGateファザードを用いて制御

Gateを活用する場所では、下記のように扱います。
Gateファザードには、denies, allows , authorizeなどのメソッドがあります。
authorize で設定している下記では、Gateの定義した処理でtrueを返さない場合には403エラーを返します。

        $chatRoom = ChatRoom::findOrFail($chatRoomId);
        Gate::authorize('chat-view', $chatRoom); 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です