一款基于 Laravel5.4 和 ACEAdmin 的后台系统
About RufoAdmin#
为什么我要做这个后台系统?我太闲?当然不是,提高生产力!这是一个基于 laravel5.4 的管理后台,页面采用 ACEAdmin,
已经内置了 RBAC 权限管理,多语言问卷,日志管理等等功能,更多功能等你发现。有些细节可能没有注意,所以可能会有 bug!
github 传送门
How to use#
- composer install
- cp .env.bak .env
- 运行 rufoadmin.sql
- happy enjoy!
特别提醒#
千万不要忘记 STAR,START,STAR ! ! !
- 建议使用 PHP7 环境,mysql 使用 5.6,不开严格模式,group by 在严格模式下不能兼容。
- 临时测试地址:http://www.rufo.site/admin/login
- 超管账号:123456@qq.com 密码:123456 请不要随便操作菜单
- 没什么权限的用户:123@qq.com 密码:123456 请不要随便操作菜单
一些特别的说明#
- 我是怎么实现的权限控制的呢?
我主要实现了角色-用户-权限的机制,如果用户没用权限这不能显示对应的菜单, 并且不能访问对应的URL, 后台有一个特别的权限是浏览后台,记忆啥名忘记了。
- 多语言问卷是怎么回事呢?
因为在以前工作中老用到问卷模块就顺手加了一个,只是实现了一个后台的功能, 前台需要自己实现,内置3中语言中日英。问题类型单选,多选,问答题。
- 插件机制,如何实现插件机制?
作者开发前期有一个愚昧的想法,把每个模块写在一个单独的包里,通过composer自动加载 但是这样扩展性依然不是很高,并且对用户友好,作者开发的 的admin后台模块就是在一个包里,基本所以代码都在一个包里,这对别人维护来说有点 捉襟见肘。最终想起了wordpress的即插即用的插件机制。 如何实现插件机制呢?我前期只能模仿wordpress来开发,wordpress的钩子函数是插件的核心, 而laravel却没有对应的功能,作为替代方案我觉得可以用事件来代替。 最终实现了简单的插件功能,插件开启,关闭,删除都会触发对应的插件,插件开启时其代码 也会被加载!
- 我是怎么实现的权限控制的呢?
开发一个简单的插件#
特别的,我规定插件放在 plugins 目录,每个插件目录下面有一个 package.json 文件配置插件的信息。
-
目录结构如下图所示:
-
注意:实际控制器的命名空间应该和package.json文件里面的命名空间相对应。当开启 一个插件时会执行PluginWasEnabled.php的代码,其他类似
-
逼者写了 2 个方法来添加和删除菜单,源码位于 packages/admin/src/Admin.php
//add_menu($title, $url, $parent_menu_id=0,$is_create_permission = false,$permission_name='') Admin::add_menu('编辑env文件', 'system/env/index',7); Admin::delete_menu('编辑env文件');
-
对于插件中有有资源文件的情况,需要执行以下代码来拷贝资源到 public 目录
$file = new FileUtil(); $file->copyDir(plugin_address('edit-env/asset'),'vendor/plugins/edit-env',true);
-
插件的路由对应插件的 routes.php,views 视图文件对应插件的 views 目录
-
其他:略,以后补充
大概什么样子#
关于我#
不会 JAVA 的 PHPer 不是一个好的 php 程序员!
后台开发说明#
- 开发流程:添加权限 (权限标识和 url 一致,例如:admin/permission/index)-> 添加 url-> 添加菜单 (绑定权限)-> 修改逻辑.
- 权限名字应用菜单 url 相同,菜单的 (菜单 active_url) 是激活的样式
后期计划#
- 添加内容管理功能,例如文章管理
- 添加用户权限组功能
- 商城。。。
- star 是开源的动力
License#
rufoadmin is open-sourced software licensed under the MIT license.
推荐文章: