PHPackages                             ouhaohan8023/easy-rbac - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. ouhaohan8023/easy-rbac

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

ouhaohan8023/easy-rbac
======================

easy rbac

0.2.7(1y ago)089MITPHPPHP ^8.1

Since Mar 24Pushed 1y ago1 watchersCompare

[ Source](https://github.com/ouhaohan8023/easyRbac)[ Packagist](https://packagist.org/packages/ouhaohan8023/easy-rbac)[ RSS](/packages/ouhaohan8023-easy-rbac/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (2)Versions (2)Used By (0)

Easy-Rbac
---------

[](#easy-rbac)

[![easy-rbac](./easy-rbac.png)](./easy-rbac.png)

### 1. 安装

[](#1-安装)

```
composer require ouhaohan8023/easy-rbac

```

### 2. 配置

[](#2-配置)

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

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

```

### 3. EasyRbac 静态方法列表

[](#3-easyrbac-静态方法列表)

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

[](#4-命令)

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

[](#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',

```

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance46

Moderate activity, may be stable

Popularity9

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity36

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

411d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/54025700740179725e05152c2b05eb32b2c33841cc7337cd1be0125749a1b6dd?d=identicon)[ohhink](/maintainers/ohhink)

---

Top Contributors

[![ouhaohan](https://avatars.githubusercontent.com/u/20508778?v=4)](https://github.com/ouhaohan "ouhaohan (26 commits)")

---

Tags

rbac

### Embed Badge

![Health badge](/badges/ouhaohan8023-easy-rbac/health.svg)

```
[![Health](https://phpackages.com/badges/ouhaohan8023-easy-rbac/health.svg)](https://phpackages.com/packages/ouhaohan8023-easy-rbac)
```

###  Alternatives

[spatie/laravel-permission

Permission handling for Laravel 12 and up

12.9k89.8M1.0k](/packages/spatie-laravel-permission)[bezhansalleh/filament-shield

Filament support for `spatie/laravel-permission`.

2.8k2.9M88](/packages/bezhansalleh-filament-shield)[binary-cats/laravel-rbac

Laravel enum-backed RBAC extension of spatie/laravel-permission

7730.4k](/packages/binary-cats-laravel-rbac)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
