2
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravelアプリで管理者権限を追加する

Last updated at Posted at 2020-08-13

## Laravelで管理者権限の作り方をシンプルにまとめました
色々やり方があるようだったので、シンプルにまとめました。
Laravelプロジェクトが作成されている前提です。

環境

  • mac OS Catalina 10.15.6
  • Laravel 7.22.4

Gateを使う

AuthServiceProviderの中にあるGateという機能を使います。
ちなみに同じファイル内にPolicyという似た機能を持つものもあります。

【GateとPolicyの使い分け】

  • Policyは特定のモデルへのアクションに対して制限を加える場合
  • Gateはモデルに関連しないアクションに対してユーザーの制限を加える場合

詳しくはこちら Laravel 7.x 認可

手順

1. XXXXX_create-users-table.phpにroleカラムを追加

今回はroleが1を管理者、5を一般ユーザーに設定します。

XXXXX_create_users_table.php
    // Role 1=admin, 5=normal user
    $table->tinyInteger('role')->default(5);

2. AuthServiceProviderに追加

isAdminという名前で定義して、管理者かどうか判断します。

AuthServiceProvider.php
public function boot()
       {
           $this->registerPolicies();

           // 管理者権限設定
           Gate::define('isAdmin',function($user){
               return $user->role === 1;
           });
       }

3. ルーティングを作成して完了

管理者にだけアクセス許可したいページとコントローラーを作成します。
ルーティングをグループにまとめ、ミドルウェアを設定したら完了です。

web.php
   Route::middleware(['auth','can:isAdmin'])->group(function(){
       Route::get('/admin','AdminController@index');
   });

Laravel 7.x ルーティング

その他参考:
Laravel Gate(ゲート)、Policy(ポリシー)を完全理解 | アールエフェクト

2
7
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
2
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?