Laravel Rbac
基于角色的权限管理拓展包
本拓展包是基于Laravel Permission的界面化封装,用于快速搭建权限管理后台
本拓展包运行基础环境:
- Php >= 7.2
- Laravel >= 6.1
临时DEMO
地址:http://202.182.110.252:8435/admin
账号:admin@gmail.com
密码:admin&%@cv..
声明
本文中的 权限 也就是 laravel中的 路由
展示
面板首页
用户列表
用户权限分配
菜单构建
路由列表
10分钟内在线用户
背景
造轮子造的很烦,但又找不到完全合适的轮子去用,所以只能自己造了。
Laravel Permission 项目很好用,但是不提供UI。本项目是基于Laravel Permission,在此基础上,加上了UI,努力做到开箱即用。
本拓展包做到的功能:
- 基于角色的权限管理,一个用户可以分配多个角色,一个角色可以分配多个权限
- 基于当前用户所拥有的权限,动态生成菜单
- 一键更新最新权限
- 记录用户操作日志,可使用队列异步
- 后台界面
安装
推荐使用在Laravel新项目
记得先在php.ini中取消对exec
,shell_exec
,proc*
等方法的限制
修改配置文件.env
# change database, and key
# change cache
CACHE_DRIVER=redis
REDIS_CLIENT=predis
# suggest
QUEUE_CONNECTION=redis
在项目根目录运行 composer
$ composer require ohhink/rrm
根目录下运行资源发布,此命令会增加配置文件(admin.php
,filesystems.php
,permission.php
),以及前端资源文件和数据库填充文件
$ php artisan vendor:publish
$ php artisan vendor:publish --tag=seeds --force
根目录下运行数据库迁移填充命令
$ php artisan migrate:refresh --seed
设置文件夹权限和软连接
$ chmod -R 777 storage
$ php artisan storage:link
至此,安装完毕
使用说明
-
后台默认路径
/admin
, 此路径可以在admin.php
中配置
安装过程中,已经默认创建了一个超级管理员admin
账号 : admin@gmail.com 密码 : admin&%@cv..
-
RBAC 的理念是,将权限赋予给角色,将角色赋予给用户。一个角色可以有多个权限,一个用户可以有多个角色。
所以使用以下步骤加入你的业务逻辑- 编写好你的业务逻辑路由
- 通过路由检测功能,获取最新的权限,例如test
- 在 resources/vendor/rrm/zh-cn/permission.php 中创建对应的翻译数据,若无此文件,可以自行创建此路径下的 permission.php。例如将 test 翻译为 测试功能
- 给对应的角色分配该路由,例如给admin用户分配测试功能
- 如果此功能为菜单功能,需要新增菜单,并重新调整菜单布局
-
如果你想重写路由,请将以下代码加入文件route/web.php
# this is rewrite the route to your app/Http/Controllers/IndexController.php index() Route::prefix(config('admin.prefix'))->middleware([ 'auth', 'admin' ])->name('admin.')->group(function () { Route::get('/', 'IndexController@index')->name('index'); });
在你的 app/Http/Controllers/IndexController.php 控制器中,你应该这样写
public function index() { // put your code here !!! return parent::index(); }
-
为了使用右侧菜单上的在线用户功能,你需要在文件app/Console.Kernel.php中增加命令,如下
protected function schedule(Schedule $schedule) { // $schedule->command('inspire') // ->hourly(); $schedule->command('admin-tool:cache-online-users')->everyMinute(); }
同时,需要在服务器定时任务中,加入如下配置
* * * * * php /home/vagrant/blade_package/artisan schedule:run >> /dev/null 2>&1
因为本项目自带日志记录,用户的每一步操作都会记录下来。为了避免响应过慢的问题,可以开启异步记录,提升响应速度。
想要修改为异步,只需要将.env
文件中的QUEUE_CONNECTION=sync
修改为QUEUE_CONNECTION=redis
当然,要使用redis,前提是已经加入PRedis包或者Redis服务如果你想修改无权限报错页面(500),你可以创建 resource/views/vendor/rrm/500.blade.php 文件来重写它
-
监听队列命令
php artisan queue:work --queue=logs --sleep=3 --tries=3 # 建议使用supervisor # supervisor配置文件 laravel-worker.conf [program:logs] process_name=%(program_name)s_%(process_num)02d command=php path_to/artisan queue:work --queue=logs --sleep=3 --tries=3 autostart=true autorestart=true user=root numprocs=2 redirect_stderr=true stdout_logfile=path_to/supervisor/logs.log 保存之后,运行 supervisorctl reload 加载配置
相关仓库
- Laravel Permission - Associate users with permissions and roles
维护者
如何贡献
非常欢迎你的加入! 有任何问题或者想要贡献代码,请提交 issue
使用许可
MIT © OhhInk