Laravel の次のチュートリアルコラムでは、laravel-permission ロールの権限制御について紹介します。
$role = Role::Create(['name' => 'add_title']);
use Spatie\Permission\Models\Role; public static function create(array $attributes = []) { $attributes['guard_name'] = $attributes['guard_name'] ?? config('auth.defaults.guard'); if (static::where('name', $attributes['name'])->where('guard_name', $attributes['guard_name'])->first()) { throw RoleAlreadyExists::create($attributes['name'], $attributes['guard_name']); } if (isNotLumen() && app()::VERSION < '5.4') { return parent::create($attributes); } return static::query()->create($attributes); }
はシーダーで呼び出されます。これは、プロジェクトの初期化に付属しています。
namespace App\Containers\Authorization\Data\Seeders; Apiato::call('Authorization@CreateRoleTask', ['admin', 'Administrator', 'Administrator Role', 999,'admin']);
$ permission = Permission :: create([ ' name ' => ' edit articles ' ]);
//可以授予任何用户权限: $ user - > givePermissionTo(' edit articles '); //你也可以一次给多个权限 $ user - > givePermissionTo( ' edit articles ', ' delete articles '); //你也可以传递数组 $ user - > givePermissionTo([ ' edit articles ', ' delete articles ' ]);
//权限可以从用户撤销: $ user - > revokePermissionTo(' edit articles ');
//或者一次性撤消并添加新的权限: $ user - > syncPermissions([ ' edit articles ',' delete articles ' ]);
//您可以测试用户是否有权限: $ user - > hasPermissionTo(' edit articles ');
//测试用户有多个权限: $ user - > hasAnyPermission([ ' edit articles ',' publish articles ',' unpublish articles ' ]);
//您可以使用Laravel的默认can功能测试用户是否具有权限: $ user - > can(' edit articles ');
//角色可以分配给任何用户: $ user - > assignRole(' writer '); //你也可以一次赋值多个角色 $ user - > assignRole( ' writer ', ' admin ');
//或者作为一个数组 $ user - > assignRole([ ' writer ', ' admin ' ]);
//角色可以从用户中删除: $ user - > removeRole(' writer ');
//角色也可以同步: //所有当前角色将被从用户中删除,而由传入的数组取代 $ user - > syncRoles([ ' writer ', ' admin ' ]);
//您可以确定用户是否具有某个角色: $ user - > hasRole(' writer ');
//您还可以确定用户是否有任何给定的角色列表: $ user - > hasAnyRole(Role :: all());
//您还可以确定用户是否具有所有给定的角色列表: $ user - > hasAllRoles(Role :: all());
//assignRole,hasRole,hasAnyRole,hasAllRoles 和removeRole函数可以接受一个字符串,
//一个\Spatie\Permission\Models\Role对象或一个\Illuminate\Support\Collection对象。 //可以给角色一个许可: $ role - > givePermissionTo(' edit articles ');
//您可以确定角色是否具有某种权限: $ role - > hasPermissionTo(' edit articles ');
//权限可以从角色中被撤销: $ role - > revokePermissionTo(' edit articles ');
リクエストで使用することもできます。ユーザーがインターフェースをリクエストすると、システムはユーザーがこのインターフェースを渡す権限とロールを持っているかどうかを判断します。
もちろん、インターフェイスがメソッドを呼び出すときに、このリクエストを挿入する必要があります。
場所は以下に示されています
//该givePermissionTo和revokePermissionTo函数可以接受字符串或Spatie\Permission\Models\Permission对象。 //权限是从角色自动继承的。另外,个人权限也可以分配给用户。例如: $ role = Role :: findByName(' writer '); $ role - > givePermissionTo(' edit articles '); $ user - > assignRole(' writer '); $ user - > givePermissionTo(' delete articles ');
基本テーブル間の関係は多対多です。アタッチ、デッチ、同期を使用してテーブル間の関係を維持できます。
ゲームに十分慣れている場合は、関係テーブルは必要ありません。この 10% の関係を実現するために自分で作成することもできます。
以上がlaravel-permission ロール権限制御 [詳細コード説明]の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。