ミドルウェアの設置方法って結構忘れがちなのでメモがてら共有します。

ミドルウェアの設置方法

app\Providers\AppServiceProvider.php

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Gate;
class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     */
    public function register(): void
    {
        //
    }

    /**
     * Bootstrap any application services.
     */
    public function boot(): void
    {
    //管理者(admin)なのかをチェックするミドルウェア
        Gate::define('admin', function($user) {
            foreach($user->roles as $role){
                if($role->name=='admin') {
                    return true;
                }   
            }
            return false;
        });
    }
}

使い方

// コントローラ内
if (Gate::allows('admin')) { ... }
// Blade内
@can('admin')
<a href="...">管理画面</a>
@endcan
// ルートに付ける
Route::get('/admin', ...)->middleware('can:admin');