-
Bouncerのインストールと設定 LaravelプロジェクトにBouncerをインストールするには、まずComposerを使用してパッケージをインストールします。
composer require silber/bouncer
インストールが完了したら、
config/app.php
ファイルでBouncerサービスプロバイダを有効にします。'providers' => [ // ... Silber\Bouncer\BouncerServiceProvider::class, ],
また、Bouncerが使用するデータベーステーブルをマイグレーションする必要があります。
php artisan bouncer:migrate
-
アビリティの定義 アビリティは、ユーザーが特定のアクションを実行できるかどうかを制御するためのルールです。例えば、ブログの管理者は記事の作成、編集、削除などのアクションを実行できるでしょう。
Bouncerでは、アビリティを定義するために「ゲート」と呼ばれるものを使用します。アビリティの定義は、
AuthServiceProvider
クラスのboot
メソッド内で行います。use Illuminate\Support\Facades\Gate; use Silber\Bouncer\Bouncer; public function boot(Bouncer $bouncer) { $bouncer->define('create-post', function ($user) { // ユーザーが記事を作成できるかどうかのロジックを定義する return $user->isAdmin(); // 例えば、管理者のみが記事を作成できる場合 }); // 他のアビリティの定義も同様に追加する }
上記の例では、「create-post」というアビリティを定義しています。このアビリティは、
$user->isAdmin()
がtrue
を返す場合にのみ有効です。 -
アビリティの割り当て 定義したアビリティをユーザーに割り当てるには、
Bouncer
ファサードを使用します。use Illuminate\Support\Facades\Bouncer; // ユーザーにアビリティを割り当てる Bouncer::allow($user)->to('create-post');
上記の例では、
$user
に「create-post」アビリティを割り当てています。 -
アビリティのチェック アビリティをチェックするには、
Bouncer
ファサードのcan
メソッドを使用します。use Illuminate\Support\Facades\Bouncer; if (Bouncer::can('create-post')) { // 記事の作成処理 } else { // アクセスが拒否された場合の処理 }
上記の例では、「create-post」アビリティを持っている場合にのみ、記事の作成処理が実行されます。