laravel-admin-ext / rbac
RBAC extension for laravel-admin
Requires
- encore/laravel-admin: 2.*
Requires (Dev)
- phpunit/phpunit: ~6.0
This package is auto-updated.
Last update: 2024-10-19 15:22:37 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'], ],
用户需先关联角色
,然后给角色设置可访问路由
、可访问操作
以及可见菜单
来实现给予角色访问控制。
角色之间可以继承,继承之后将自动拥有父级角色的访问权限。
如上图所示,在设置角色权限的时候,会自动加载所有注册的后台路由
,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('系统', '发送邮件');
上面的配置将会生成下面的路由访问
配置
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控制项:
Donate
Help keeping the project development going, by donating a little. Thanks in advance.
License
Licensed under The MIT License (MIT).