[Laravel]いつも忘れるやつ#4 Gate

app\Providers\AppServiceProvider.php

use Illuminate\Support\Facades\Gate;
use App\Models\User;
public function boot(): void
{
    Gate::define('test',function(User $user){
        if(条件){
            return true;
        }
        return false;
    });
}

 
routes/web.phpで制限する場合

Route::get('/test',[TestController::class,'test'])->middleware('can:test');

 
blade.phpで制限する場合

@can('test')
制限対象
@endcan

 
コントローラーで制限する場合

use Illuminate\Support\Facades\Gate;
public function index(){
    Gate::authorize('test');
    $posts = Post::all();
    return view('post.index',compact('posts'));
}

 
AppServiceProvider.phpの条件に合致しない場合は
「403 | This action is unauthorized.」が表示される