目次
はじめに
「laravel-permission」の使い方を忘れないように記事にします。
環境
Laravel:5.5
PHP:7.0
laravel-permission:
laravel-permissionを実装する
公式を参考に実装します。
https://github.com/spatie/laravel-permission
以下コマンドでインストールします。
composer require spatie/laravel-permission php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="migrations" php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="config"
ロールとパーミッションを作成する
ドキュメントを参考に以下の記述で「writer」ロール「edit articles」パーミッションを作成します。
呼び出し
use Spatie\Permission\Models\Role; use Spatie\Permission\Models\Permission;
ロール作成
$role = Role::create(['name'=>'writer']);
パーミッション作成
$permission = Permission::create(['name'=>'edit articles']);
パーミッションを直接ユーザーに割り振る
ロールを通す事無くユーザーに直接パーミッションを付与する場合は以下を使います。
パーミッション付与
$user->givePermissionTo('edit articles');
パーミッション削除
$user->revokePermissionTo('edit articles');
ユーザーのパーミッションを取得
$user->getDirectPermissions();
ユーザーにパーミッションが付与されているかを確認
$user->hasPermissionTo('edit articles');
ユーザーにロールを割り振る
ユーザーにロールを割り振ります。
ロールを付与
$user->assignRole('writer');
ロールを削除する
$user->removeRole('writer');
ユーザーのロールを取得
$user->getRoleNames();
ユーザーにロールが付与されているか確認
$user->hasRole('writer');
ロールにパーミッションを割り振る
ロールにパーミッションを割り振ります。
全てのロールを取得する
$roles = Role::all();
特定のロールを取得する
$role = Role::findByName('writer');
ロールを付与
$role->givePermissionTo('edit articles');
ロールを削除する
$role->revokePermissionTo('edit articles');
ユーザーにロールが付与されているか確認
$role->hasPermissionTo('edit articles');
まとめ
今回の記事は「laravel-permission」の基本的な使い方を記事にしました。
この記事を参考に、特定のロールだけアクセスできないURLを作成する記事も書きました。
併せてどーぞー
https://www.kabanoki.net/2836/