忘れないように記録しとこ

カバの樹

laravel-permissionの使い方(備忘録)

はじめに

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/

 

  • B!