PHPackages                             senman/yii2-rbac-manager - 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. senman/yii2-rbac-manager

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

senman/yii2-rbac-manager
========================

yii2的RBAC,基于角色的权限控制，扁平结构，容许一个用户有一个或多个角色的灵活配置，含菜单等等，支持多个子系统公用一个权限管理。

1.0.x-dev(7y ago)0132MITPHPPHP &gt;=5.6.0

Since Jun 14Pushed 7y agoCompare

[ Source](https://github.com/senmangit/yii2-rbac-manager)[ Packagist](https://packagist.org/packages/senman/yii2-rbac-manager)[ Docs](https://www.monqin.com)[ RSS](/packages/senman-yii2-rbac-manager/feed)WikiDiscussions master Synced 2d ago

READMEChangelogDependenciesVersions (2)Used By (0)

yii2-rbac-manager
=================

[](#yii2-rbac-manager)

yii2的RBAC,基于角色的权限控制，扁平结构，容许一个用户有一个或多个角色的灵活配置，含菜单等等，支持多个子系统公用一个权限管理。

一、安装：

composer require senman/yii2-rbac-manager dev-master

二、导入数据库

导入vender/senman/yii2-rbac-manager/Rbac.sql

三、配置参数 在config/params.php里添加配置参数

```
return [
    //权限配置
    'rbac_manager' => [
        "user_model" => "\\common\\models\\User",//用户模型地址
        "role_model" => "\\common\\models\\Role",//角色模型地址
        "rule_model" => "\\common\\models\\Rule",//规则模型地址
        "system_model" => "\\common\\models\\System",//系统模型地址
        "role_rule_model" => "\\common\\models\\RoleRule",//角色规则模型地址
        "user_role_model" => "\\common\\models\\UserRole",//用户角色模型地址

        "super_admin_id" => [585, 576, 575],//管理员用户的id
        "base_role_id" => "35",//配置基本角色的ID
        //该状态为规则、用户、角色、系统的状态
        "status" => [
            "status_disable" => 0,//禁用
            "status_active" => 1,//启用
        ],
        //不需要权限校验的路由
        "except_route" => [
            "rule/menus",
        ],
    ]
];

```

四、判断是否具有权限

```
\Rbac\models\UserRole::hasAuth($user_id, $pathInfo = null, $module_id="", $system_id=1);

```

五、常用方法

角色相关：

获取角色模型的主键ID

Role::getRolePrimaryKey();

根据条件修改角色

$condition为条件数组，例如

\['role\_id'=&gt;1,'name'=&gt;'test'\]

$data为需要修改的数据，例如

\['sort'=&gt;100\]

Role::updateByCondition($condition, $data);

根据角色ID进行修改

$role\_id 为角色ID

$data为需要修改的数据，例如

\['sort'=&gt;100\]

Role::updateByRoleId($role\_id, $data);

根据角色ID条件进行删除

Role::deleteByRoleId($role\_id)

根据条件进行删除

$condition为条件数组，例如

\['role\_id'=&gt;1,'name'=&gt;'test'\]

Role::deleteByCondition($condition)

获取该角色下的所有节点名

$role\_id为角色ID

$field 角色表字段名，默认为：name，即路由地址

$status 状态值，0：为启用状态，默认只获取正常启用状态的角色

$system\_id 系统ID，属于哪个子系统

Role::getAccessByRoleId($role\_id, $field = "name", $status = 0, $system\_id)

通过角色ID获取角色信息

$role\_id 角色ID

$fields 获取的字段，默认为所有，示例：

\['role\_id','name'\]

Role::getRoleById($role\_id, $fields = "\*")

通过条件进行获取角色

$condition为条件数组，例如

\['role\_id'=&gt;1,'name'=&gt;'test'\]

$fields 获取的字段，默认为所有，示例：

\['role\_id','name'\]

Role::getRoleByCondition($condition, $fields = "\*")

添加角色

$data为需要添加的数据，示例：

\[
'system\_id'=&gt;1, 'name'=&gt;'test', 'status'=&gt;0, 'remark'=&gt;'备注',
\];

Role::add($data);

根据条件获取带分页的角色列表

$page 页码，默认为0

$limit 每一页条数，默认为20

$condition 条件数组，默认为空

Role::listOfPagin($page, $limit = 20, $condition=\[\]);

给角色授权相关：

通过用户ID获取所有权限

$user\_id 用户ID

$system\_id 子系统ID

该方法返回该用户在该系统ID下的所有规则路由name

RoleRule::getAccess($user\_id, $system\_id);

根据条件进行删除

RoleRule::deleteByCondition($condition = array());

判断是否为超管，注意该超管是写死在配置文件中的，可供调试所用

RoleRule::is\_super\_admin($user\_id);

判断是否认证通过

$pathInfo为需要判断的路由地址，若为null则取当前路由

$module\_id为版本id，例如：http:://[www.monqin.com/v1/user/info](http://www.monqin.com/v1/user/info)

则其中的V1为版本id，若无此版本控制，可直接为空

$system\_id 子系统ID

返回值参考：

400：已授权

401:该用户未找到

402：该用户状态异常

403：该用户已被删除

404：授权异常

405：权限不足

406：该系统已经被禁用

RoleRule::auth($user\_id, $pathInfo = null, $module\_id = "", $system\_id);

判断是否有权限

$pathInfo为需要判断的路由地址，若为null则取当前路由

$module\_id为版本id，例如：http:://[www.monqin.com/v1/user/info](http://www.monqin.com/v1/user/info)

则其中的V1为版本id，若无此版本控制，可直接为空

$system\_id 子系统ID

返回为布尔值

RoleRule::hasAuth($user\_id, $pathInfo = null, $module\_id, $system\_id);

为角色分配权限

$role\_id 需要分配权限的角色ID

$rule\_id\_arr 规则节点ID数组

RoleRule::access($role\_id, array $rule\_id\_arr);

规则相关：

根据ID 获取规则信息

$rule\_id 规则ID

$fields 获取的字段，默认为所有，示例：

\['rule\_id','name'\]

Rule::getRuleById($rule\_id, $fields = "\*");

根据rule\_id删除数据

Rule::deleteByRuleId($rule\_id);

获取规则节点树型数据结构

$type 类型，当type=0时$id为角色ID，否则为用户ID

$id 角色或用ID，具体类型取决于$type

$menu\_show 是否是菜单，0：不是菜单，1：菜单，为null时为所有

$status 规则节点状态，0：启用，1：不启用，当为null时为所有

$pid 树顶id，若是获取整个树则为0，否则需要填入树顶点ID

$fields 获取的字段，默认为null，只获取所需要的字段：

\['system\_id', 'rule\_id', 'pid', 'name', 'title', 'href', 'icon', 'status', 'menu\_show', 'sort'\]

$is\_fifter 是否过滤掉无权限的节点，1：过滤，0：不过滤

$module\_id $module\_id为版本id，例如：http:://[www.monqin.com/v1/user/info，则其中的V1为版本id，若无此版本控制，可直接为空](http://www.monqin.com/v1/user/info，则其中的V1为版本id，若无此版本控制，可直接为空)

$sort 排序，1：降序，0：升序

$system\_id 子系统ID

Rule::getRulesTree($id, $type = 0, $menu\_show = null, $status = null, $pid = 0, $fields = null, $is\_fifter = 0, $module\_id='', $sort = 1, $system\_id)

根据规则ID获取其下所有节点id数组

Rule::getSonByRuleId($rule\_id);

通过rule\_id获取所有到顶点的ID

Rule::getRootByRuleId($rule\_id)

新增规则节点

$data为需要添加的数据，示例：

$data=\[ 'system\_id'=&gt;1, 'name'=&gt;'rule/add', //后台执行的路由，必填
'title'=&gt;'权限管理', //规则节点的标题，必填
'href'=&gt;'链接地址', //前台链接地址，非必填
'pid'=&gt;'0', //上级ID
'status'=&gt;0, //状态，0：启用，1：禁用
'remark'=&gt;'备注', //非必填
'sort'=&gt;'0',//排序，非必填
'menu\_show'=&gt;'0',//是否显示菜单，0：不显示，1：显示
'icon'=&gt;'0',//菜单图标 非必填
\]

Rule::add($data)

获取规则节点的分页列表

$page 页码，默认为0

$limit 每一页条数，默认为20

$system\_id 子系统ID，为null时则获取所有系统的规则节点

Rule::listOfPagin($page, $limit = 20, $system\_id = null)

获取用户菜单

$user\_id 用户ID 必填

$system\_id 系统ID 必填

Rule::getMenus($user\_id, $system\_id, $sort = 1, $pid = 0, $module\_id = "", $menu\_show = 1, $status = 0, $is\_fifter = 1, $fields = null)

用户相关：

判断用户是否有效

User::is\_valid($user\_id)

根据id获取用户信息

User::getUserById($userId, $fields = \['\*'\])

通过用户ID获取所有权限节点名称数组

User::getAccessByUserId($user\_id, $status=0, $system\_id)

通过用户ID获取子系统所有所属角色的ID列表

User::getRolesByUserId($user\_id, $system\_id)

获取用户的分页列表

$keywords 查询的关键词，提供username和real\_name的模糊查找

User::listOfPagin($page, $limit = 20, $sort = 1, $keywords = NULL)

用户-角色相关：

给用户分配一个角色

$user\_id 用户ID

$role\_id 角色ID

UserRole::setRoleByUserId($user\_id, $role\_id)

为没有配置角色的用户配置一个基本角色

调用此方法需在配置项里配置参数base\_role\_id的值，该值为你需要指定的一个角色ID

UserRole::setBasicRole($user\_id)

为用户批量分配角色

$user\_id 用户ID

$role\_id\_arr 角色ID 数组

$system\_id 系统ID 必填

UserRole::setUserRole($user\_id, $role\_id\_arr, $system\_id)

根据用户id查询到用户所有的角色信息

$user\_id 用户ID

$fields 获取字段的数组，选填

$system\_id 系统ID，当获取子系统的该用户对应的角色时则传实际的系统ID；当传NULL时,则获取所有的系统的角色

UserRole::getUserRoleByUserId($user\_id, $system\_id = NULL, $fields = \['\*'\])

六、如有任何疑问欢迎加入QQ群：338461207 进行交流

if you have any questions, welcome to join QQ group: 338461207

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 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

2891d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/90fceb015bc1fdd2dfbd638bc9e01bfc351fab91ba92570b20dd73ed2451988b?d=identicon)[senmangit](/maintainers/senmangit)

---

Top Contributors

[![senmangit](https://avatars.githubusercontent.com/u/24665613?v=4)](https://github.com/senmangit "senmangit (103 commits)")

---

Tags

authusermanagerrbacyii2system

### Embed Badge

![Health badge](/badges/senman-yii2-rbac-manager/health.svg)

```
[![Health](https://phpackages.com/badges/senman-yii2-rbac-manager/health.svg)](https://phpackages.com/packages/senman-yii2-rbac-manager)
```

###  Alternatives

[2amigos/yii2-usuario

Highly customizable and extensible user management, authentication, and authorization Yii2 extension

298275.5k14](/packages/2amigos-yii2-usuario)[jinxing/yii2-admin

RBAC Auth manager for Yii2

381.0k1](/packages/jinxing-yii2-admin)

PHPackages © 2026

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