ouhaohan8023/easy-rbac 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

ouhaohan8023/easy-rbac

最新稳定版本:0.2.7

Composer 安装命令:

composer require ouhaohan8023/easy-rbac

包简介

easy rbac

关键字:

README 文档

README

easy-rbac

1. 安装

composer require ouhaohan8023/easy-rbac

2. 配置

php artisan vendor:publish --provider="Ouhaohan8023\EasyRbac\EasyRbacServiceProvider"

其中 easy-rbac.php 中配置要存入数据库的路由组
permission.php 中是在 laravel-permission 的基础上结合 easy-rbac 进行配置

3. EasyRbac 静态方法列表

方法名 描述 参数 返回值
syncPermission 同步后端权限
permissionTree 返回权限树 树状结构的路由树
initMenus 使用前端路由初始化菜单 前端路由文件构成的JSON字符串
addMenu 新增菜单 bool
updateMenu 更新菜单 $data 要更新的内容,$id 要更新的ID bool
menuTree 菜单树 菜单树
roleTree 角色树 角色树
addRole 新增角色 $data bool
updateRole 更新角色 $data 要更新的内容,$id 要更新的ID bool
getMenusByUser 获取用户的可用菜单树 $user 当前用户 菜单树
getPermissionsByUser 获取用户的可用权限列表 $user 当前用户 权限数组
persistenceMenus 将menus表的数据持久化到本地
restoreMenus 将menus表的数据持久化到本地
delMenu 删除菜单 $id 菜单ID bool

4. 命令

命令名 描述
easy:menu-persist 将菜单从数据库导出到文件中
easy:menu-recover 将菜单从文件恢复到数据库中
easy:sync-permission 同步路由

5. 使用

1. 将路由按照树形结构存入表中
EasyRbac::syncPermission();

2. 返回树状结构的路由树

use Ouhaohan8023\EasyRbac\Resource\PermissionTreeCollection;

$data = EasyRbac::permissionTree();
return new PermissionTreeCollection($data);

3. 使用预置的 FormRequest 创建菜单
use Ouhaohan8023\EasyRbac\Request\MenuRequest;

public function store(MenuRequest $request)
{
    $validated = $request->validated();
    if (isset($validated['extend'])) {
        $validated['extend'] = json_encode($validated['extend']);
    }

    DB::beginTransaction();
    $menuRe = Menu::create($validated);
    $permissionRe = true;
    if (isset($validated['guard']) && $validated['guard']) {
        $permissionRe = $menuRe->permissions()->sync($validated['guard']);
    }

    if ($menuRe && $permissionRe) {
        DB::commit();
        $this->success('');
    } else {
        DB::rollBack();
        $this->error();
    }
}

4. 初始化菜单
在前端路由文件中,使用
const asyncRoutesJson = JSON.stringify(asyncRoutes)
console.log(asyncRoutesJson, 9)
将路由转成json打印出来,然后使用下面的方法进行菜单初始化(初始化上下级关系,目前需要手动调整菜单级别 目录/菜单/按钮)
$arr = json_decode($json, true);
EasyRbac::initMenus($arr);

5. 菜单树状结构
$tree = EasyRbac::menuTree();

6. 新增菜单
{
    "system": "UserSystem",
    "name": "menu1",
    "title": "菜单1",
    "type": "menu",
    "guard": [
        97,
        53,
        11,
        95
    ],
    "isSvg": 0,
    "parent_id": 97,
    "weigh": 0,
    "noClosable": 0,
    "breadcrumbHidden": 1,
    "hidden": 0,
    "levelHidden": 0,
    "dynamicNewTab": 0,
    "activeMenu": 0,
    "state": 1,
    "badge": 0
}
EasyRbac::addMenu($data);
其中guard是权限id,parent_id是上级菜单id

7. 在路由中引入中间件,开启权限认证
->middleware(['easy-rbac']);

8. 配置文件中可以手动关闭认证
/**
 * 是否启用中间件
 */
'enable_middleware' => true,

9。 配置文件中可以指定超管角色key
/**
 * 自定义超级管理员的名称
 * 超级管理员会跳过权限认证
 */
'super_admin_key' => 'super_admin',

统计信息

  • 总下载量: 89
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-04-22