aries/laravel-rbac

laravel 框架的角色基于访问控制

v1.0 2023-05-02 16:26 UTC

This package is auto-updated.

Last update: 2024-08-31 00:31:35 UTC


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