Laravel Admin RBAC 后台管理系统

Umi 是由laravel 5.3开发的全面的后台管理系统, 包括以下特性
https://github.com/taoyu65/UMIAdmin

  • BREAD 系统 (编辑, 读取, 添加, 删除, 查看) 要求laravel 5.3
  • RBAC 权限系统 (基于角色权限开发) 包含2部分, 一部分是 数据库中的数据表的操作权限, 增删改等, 另一部分是管理界面权限操作, 整个权限系统基于数据层面和URL界面的操作与分配
  • 数据表的全面操作 增删改, 搜索, 以及自定义这些操作
  • 表之间关系的设定与操作, 比如可以自定义关联删除,关联更新, 或定义删除某表之前检查是否在其他表存在外键因而不能删除表等, 例如删除一个购物车,里面的物品所在的物品表的数据将一并删除等
  • 自定义显示数据格式, 可以设定任何字段用以什么方式现在在界面.例如一个外键可以显示其ID 或者 显示所对应表字段的名称.

功能简介 (详细攻略正在制作...)

  • 权限系统: 分为2个层次, 硬编码层次 和 比较流行的RBAC系统
    • 硬编码权限: 权限不依赖数据库中的数据, 由代码来编写权限, 系统有相应的接口来实现权限, 硬编码权限拥有比RBAC更高的优先级, 也就是说如果用户被指定
      为硬编码权限将忽略所有RBAC权限. 已经实现的权限有: 超级管理员(拥有所有权限, 除了修改代码不能通过数据库改变他的权限)
      • 目的: 可以为不同的用户定制不依赖数据库的永久的权限, 可以定制不同风格的界面以及额外的功能
      • 实现: 在配置文件指定一个用户的硬编码权限名称 > 实现硬编码权限的接口 (指定特有的权限功能) > 在工厂类添加对应的代码用于生成权限对象
      • 风格: 在实现硬编码权限接口中, 可以指定不同的masterpage的模板, 搜索栏目, 页眉, 页尾, 左边栏, 提示栏目, 各个模块均可以实现接口自定义不同风格,
        然后通过不同的用户调用不同的界面
    • RBAC系统: 比较流行的权限解决方案, 本案例的权限细度定制在数据表的增删改查 俗称BREAD, (不支持字段级别的增删改查, 因为本人觉得根本没用 还增加复杂程度)
      由于和硬编码权限共存, 所以只有用户没有被指定为特殊的硬编码权限时候才发挥作用. 此权限系统由umiAuth包实现, 调用方式借鉴了entrust, ("动作名称-表名称" 比如
      delete-user)
      • 实现1: 如果一个路由只查看一种权限可以使用中间件BreadAccessMiddleware配合路由来实现(逻辑代码完全不用关心权限问题), 路由必须包含table的参数即"{table}"
        路由调用中间件要指定要判断的权限动作(比如 'middleware'=> 'umi.bread.access:edit')
      • 实现2: 如果一个页面包含多种不同权限判断, 可以实例化umiAuth然后 调用里面的各种方法来判断权限
  • 自定义数据显示: 用于在浏览, 编辑, 添加数据表记录的时候 自定义数据格式的显示.
    • 例如: 当添加文章信息时候, 文章类别(通常为外键) 需要显示对应数据表的真实类别名称, 而不是主表的数字. 在例如 输入性别的时候可以用下拉框或者单选按钮来替代文本框
    • 实现: 实现对应的接口, 完成接口中的方法
    • 潜力: 只要能想到的数据类型都可以实现, 时间, 文本, 连接, 图片, 星级, 标签(可以带样式, 不同类别不同样式), 外键显示, 等等...
  • 表关系操作: 当删除, 编辑, 一条记录的时候可以自定义触发表关系操作
    • 例如: 删除一个用户触发删除所有用户其他信息的操作, 或增加一个用户以后, 修改某个字段为其加一等等
    • 实现: 通过程序中的向导自定义, 分为4个类别, 内联删除, 外表检查, 自身检查, 自定义
      • 内联删除: 当删除一条记录则同时删除指定的数据, 可以为不同数据表, 删除条件可以自定义
      • 外表检查: 在执行一个动作之前(比如删除, 编辑) 检查指定的一个数据表中的记录是否符合指定的规则. 比如, 为了保持数据完整性,删除或者编辑之前查看是否其他表存在这条数据的外键
      • 自身检查: 在执行一个动作之前(比如删除, 编辑) 检查自身的数据记录是否符合指定的规则, 同外表检查, 只不过检查自身数据记录
      • 自定义: 就是完全自定义
  • 自定义搜索: 对数据表进行搜索条件的配置
    • 例如: 功能定制为Tab页, 可以有多个不同的tab页, 每个tab页里面可以定制不同的搜索选项, 可以定制不同的数据类型. 可以组合搜索选项
  • 菜单定制: 左边栏菜单可以根据不同的用户显示不同的菜单, 属于权限的一部分, 但是仅仅是url链接级别的显示和隐藏. 配合RBAC发挥最大作用.菜单功能在数据库层面上分为, 菜单树 和 json菜单
    • 菜单树: 以树状形态显示所有的菜单, 只有超级管理用会从这个菜单树加载菜单(因为超级管理员拥有全部权限,不受RBAC控制, 需要看到所有菜单)
    • json菜单: 每一个用户分配一个json菜单, 以json形式存储, json数据是根据彩单树的数据整合而成.(不要和RBAC的用户角色权限混淆)

安装

  1. 安装composer 和 laravel 5.3 框架. 请自行安装,可以通过不同方式安装. 推荐composer方式

    执行命令 composer create-project --prefer-dist laravel/laravel blog 5.3.*

  2. 安装UMI Admin.

    执行命令 composer require ym/umi "v0.1.2.*"

    如果可以正常使用composer 执行上面命令的可以忽略这个段落, 如果不能正常使用composer的小伙伴可以查看 https://github.com/taoyu65/UMIAdmin/wiki/i...

  3. 配置数据库连接文件(.env)

    DB_HOST=localhost

    DB_DATABASE=新建一个空的数据库

    DB_USERNAME=用户名

    DB_PASSWORD=密码

  4. 添加服务提供者.添加下面2行代码到 根目录/config/app.php 里面providers数组里面

    YM\UmiServiceProvider::class,

    YM\umiAuth\umiAuthServiceProvider::class,

  5. 执行下面的命令, 用于安装应用程序

    php artisan umi:install (会提示选择安装数据库中数据的语言 1=汉语 2=英语) 输入1然后回车.
    附:如果数据库已经安装完毕, 在想更改语言英语或汉语 仅需执行 php artisan umi:install --lang-zh-only(或 --lang-en-only)

  6. 设置系统为中文:

    在根目录下config/app.php中 设置 'locale' => 'zh_cn', 即可

  7. 好了. 可以开始了.

    注意:为了保证数据库迁移,数据库结构和一些必要的数据。 请在执行php artisan umi:install之前 保持数据库为空。如果要重新安装请手动清空数据库包括结构。

图片








本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 4
leo

ACE 为商业收费模板,请不要放在开源项目中

7年前 评论

@leo 我还在联系作者, 因为这个模板 很久以前作者就放弃了, 也没有渠道买版权. 另一方面 我正在用开源模板作另一套, 如果ACE确实侵权 我会替换掉的

7年前 评论

file
这是什么鬼?

6年前 评论

@Runing 这段是获取 IP 的代码, 第三方 API, 估计他们不支持了, 进入代码 把这块屏蔽就行了, 不好意思拉 laravel 这个我没有时间更新了, 不过对于新手来说 研究下 还是有一些帮助的.

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!