aries / laravel-rbac
laravel 框架的角色基于访问控制
v1.0
2023-05-02 16:26 UTC
Requires (Dev)
- orchestra/testbench: ^6.21
README
laravel 框架的角色基于访问控制
安装
通过 composer 安装
composer require aries/laravel-rbac
发布环境配置
php artisan vendor:publish --provider='Aries\LaravelRbac\LaravelRbacServiceProvider'
在 .env 文件中启用包
RBAC_ENABLE=true
然后运行迁移来创建角色和权限表
php artisan migrate
设置
您需要将您的 User 模型扩展自 Aries\LaravelRbac\Models\User,如下所示
<?php namespace App/Models; ... use Aries\LaravelRbac\Models\User as RbacUser; ... class User extends RbacUser { ...
创建角色并将它分配给用户
您可以为用户创建角色,如下所示
$user = App\Models\User::first(); $user->roles()->create([ 'name' => 'role-name', 'label' => 'optional role label' ]);
您还可以同步用户角色与现有角色,如下所示
$user = App\Models\User::first(); $roles = Aries\LaravelRbac\Models\Role::all()->pluck('id')->toArray(); $user->roles()->attach($roles);
创建权限并将它分配给角色
您可以创建权限如下所示
$ability = Aries\LaravelRbac\Models\Ability::create([ 'name' => 'ability-name', 'label' => 'optional ability label' ]);
您还可以通过角色模型创建权限,如下所示
$role = Aries\LaravelRbac\Models\Role::first(); $role->abilities()->create([...]);
或者您可以将多个现有权限分配给一个角色,如下所示
$abilities = Aries\LaravelRbac\Models\Ability::all()->pluck('id')->toArray(); $role = Aries\LaravelRbac\Models\Role::first(); $role->abilities()->attach($abilities);
使用方法
此包为每个权限定义了 Gate,您可以在默认情况下通过中间件、控制器或视图使用它。
阅读 官方文档关于 Gate 和 Policy 的说明。
您还可以通过用户模型检查用户是否有角色或权限。
$user = App\Models\User::first(); $user->hasRole('role-name') # return bool $user->hasAbility('ability-name') # return bool