RBAC extension for laravel-admin

dev-master 2020-09-19 07:01 UTC

This package is auto-updated.

Last update: 2021-09-19 09:14:54 UTC


README

Installation

composer require laravel-admin-ext/rbac -vvv

发布资源:

php artisan vendor:publish --provider="Encore\Admin\RBAC\RBACServiceProvider"

运行迁移

php artisan migrate

通过下面的命令,创建一个菜单项,新建一个默认的超级管理员角色(administrator), 最后把所有的用户设置为超级管理员

超级管理员角色拥有所有路由和action的访问权限,并且所有的菜单对其可见。

php artisan admin:import rbac

到这里结束安装,打开http://localhost/admin/auth/roles管理角色,在用户模块http://localhost/admin/auth/users可以给用户添加角色。

Usage

首先需要在config/admin.php中的路由配置中添加rbac中间件开启, 在route.middleware中加入'admin.rbac'即可

    'route' => [

        'prefix' => env('ADMIN_ROUTE_PREFIX', 'admin'),

        'namespace' => 'App\\Admin\\Controllers',

        'middleware' => ['web', 'admin', 'admin.rbac'],
    ],

用户需先关联角色,然后给角色设置可访问路由可访问操作以及可见菜单来实现给予角色访问控制。

角色之间可以继承,继承之后将自动拥有父级角色的访问权限。

QQ20200917-160148

如上图所示,在设置角色权限的时候,会自动加载所有注册的后台路由action以及菜单项,在这之前需要先进行下面的设置:

设置路由名称

app/Admin/routes.php中,给路由设置名称:

// resource资源路由,将自动生成`列表`、`创建`、`编辑`、`更新`等6个路由权限
$router->resource('posts', PostController::class)->rbac('文章管理');

// 将会生成`仪表盘`路由权限
$router->get('dashboard', 'DashboardController@index')->rbac('仪表盘');

// 如果希望多个路由在一个分组下面,可以使用下面的方法
$router->get('system/setting', 'SystemController@index')->rbac('系统', '设置');
$router->post('system/email', 'SystemController@index')->rbac('系统', '发送邮件');

上面的配置将会生成下面的路由访问配置

QQ20200917-154747

Action访问控制

如果你使用了laravel-admin的action,并希望进行访问控制,需要先在config/admin/rbac.php中进行配置:

<?php

return [
    'actions' => [
        '上传文件' => \App\Admin\Actions\UploadFile::class,
        '全局' => [
            '批量复制' => \App\Admin\Actions\BatchReplicate::class,
            '清理缓存' => \App\Admin\Actions\ClearCache::class,
            '复制'   => \App\Admin\Actions\Replicate::class,
        ],
        '文档'   => [
            '克隆'   => \App\Admin\Actions\Document\CloneDocument::class,
            '批量复制' => \App\Admin\Actions\Document\CopyDocuments::class,
            '导入'   => \App\Admin\Actions\Document\ImportDocument::class,
            '修改权限' => \App\Admin\Actions\Document\ModifyPrivilege::class,
            '分享'   => \App\Admin\Actions\Document\ShareDocument::class,
            '批量分享' => \App\Admin\Actions\Document\ShareDocuments::class,
        ]
    ]
];

将会生成如下截图的Action控制项:

QQ20200917-155809

Donate

Help keeping the project development going, by donating a little. Thanks in advance.

PayPal Me

-1

License

Licensed under The MIT License (MIT).