2017 © Pedro Peláez
 

library yii2-rbac-manager

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

image

senman/yii2-rbac-manager

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

  • Monday, July 30, 2018
  • by senmangit
  • Repository
  • 0 Watchers
  • 0 Stars
  • 94 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 3 Versions
  • 1243 % Grown

The README.md

yii2-rbac-manager

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

一、安装:, (*2)

composer require senman/yii2-rbac-manager dev-master, (*3)

二、导入数据库, (*4)

导入vender/senman/yii2-rbac-manager/Rbac.sql, (*5)

三、配置参数 在config/params.php里添加配置参数, (*6)

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",
        ],
    ]
];

四、判断是否具有权限, (*7)

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

五、常用方法, (*8)

角色相关:, (*9)

获取角色模型的主键ID, (*10)

Role::getRolePrimaryKey();, (*11)

根据条件修改角色, (*12)

$condition为条件数组,例如, (*13)

['role_id'=>1,'name'=>'test'], (*14)

$data为需要修改的数据,例如, (*15)

['sort'=>100], (*16)

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

根据角色ID进行修改, (*18)

$role_id 为角色ID, (*19)

$data为需要修改的数据,例如, (*20)

['sort'=>100], (*21)

Role::updateByRoleId($role_id, $data);, (*22)

根据角色ID条件进行删除, (*23)

Role::deleteByRoleId($role_id), (*24)

根据条件进行删除, (*25)

$condition为条件数组,例如, (*26)

['role_id'=>1,'name'=>'test'], (*27)

Role::deleteByCondition($condition), (*28)

获取该角色下的所有节点名, (*29)

$role_id为角色ID, (*30)

$field 角色表字段名,默认为:name,即路由地址, (*31)

$status 状态值,0:为启用状态,默认只获取正常启用状态的角色, (*32)

$system_id 系统ID,属于哪个子系统, (*33)

Role::getAccessByRoleId($role_id, $field = "name", $status = 0, $system_id), (*34)

通过角色ID获取角色信息, (*35)

$role_id 角色ID, (*36)

$fields 获取的字段,默认为所有,示例:, (*37)

['role_id','name'], (*38)

Role::getRoleById($role_id, $fields = "*"), (*39)

通过条件进行获取角色, (*40)

$condition为条件数组,例如, (*41)

['role_id'=>1,'name'=>'test'], (*42)

$fields 获取的字段,默认为所有,示例:, (*43)

['role_id','name'], (*44)

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

添加角色, (*46)

$data为需要添加的数据,示例:, (*47)

[
'system_id'=>1, 'name'=>'test', 'status'=>0, 'remark'=>'备注',
];, (*48)

Role::add($data);, (*49)

根据条件获取带分页的角色列表, (*50)

$page 页码,默认为0, (*51)

$limit 每一页条数,默认为20, (*52)

$condition 条件数组,默认为空, (*53)

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

给角色授权相关:, (*55)

通过用户ID获取所有权限, (*56)

$user_id 用户ID, (*57)

$system_id 子系统ID, (*58)

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

RoleRule::getAccess($user_id, $system_id);, (*60)

根据条件进行删除, (*61)

RoleRule::deleteByCondition($condition = array());, (*62)

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

RoleRule::is_super_admin($user_id);, (*64)

判断是否认证通过, (*65)

$pathInfo为需要判断的路由地址,若为null则取当前路由, (*66)

$module_id为版本id,例如:http:://www.monqin.com/v1/user/info, (*67)

则其中的V1为版本id,若无此版本控制,可直接为空, (*68)

$system_id 子系统ID, (*69)

返回值参考:, (*70)

400:已授权, (*71)

401:该用户未找到, (*72)

402:该用户状态异常, (*73)

403:该用户已被删除, (*74)

404:授权异常, (*75)

405:权限不足, (*76)

406:该系统已经被禁用, (*77)

RoleRule::auth($user_id, $pathInfo = null, $module_id = "", $system_id);, (*78)

判断是否有权限, (*79)

$pathInfo为需要判断的路由地址,若为null则取当前路由, (*80)

$module_id为版本id,例如:http:://www.monqin.com/v1/user/info, (*81)

则其中的V1为版本id,若无此版本控制,可直接为空, (*82)

$system_id 子系统ID, (*83)

返回为布尔值, (*84)

RoleRule::hasAuth($user_id, $pathInfo = null, $module_id, $system_id);, (*85)

为角色分配权限, (*86)

$role_id 需要分配权限的角色ID, (*87)

$rule_id_arr 规则节点ID数组, (*88)

RoleRule::access($role_id, array $rule_id_arr);, (*89)

规则相关:, (*90)

根据ID 获取规则信息, (*91)

$rule_id 规则ID, (*92)

$fields 获取的字段,默认为所有,示例:, (*93)

['rule_id','name'], (*94)

Rule::getRuleById($rule_id, $fields = "*");, (*95)

根据rule_id删除数据, (*96)

Rule::deleteByRuleId($rule_id);, (*97)

获取规则节点树型数据结构, (*98)

$type 类型,当type=0时$id为角色ID,否则为用户ID, (*99)

$id 角色或用ID,具体类型取决于$type, (*100)

$menu_show 是否是菜单,0:不是菜单,1:菜单,为null时为所有, (*101)

$status 规则节点状态,0:启用,1:不启用,当为null时为所有, (*102)

$pid 树顶id,若是获取整个树则为0,否则需要填入树顶点ID, (*103)

$fields 获取的字段,默认为null,只获取所需要的字段:, (*104)

['system_id', 'rule_id', 'pid', 'name', 'title', 'href', 'icon', 'status', 'menu_show', 'sort'], (*105)

$is_fifter 是否过滤掉无权限的节点,1:过滤,0:不过滤, (*106)

$module_id $module_id为版本id,例如:http:://www.monqin.com/v1/user/info,则其中的V1为版本id,若无此版本控制,可直接为空, (*107)

$sort 排序,1:降序,0:升序, (*108)

$system_id 子系统ID, (*109)

Rule::getRulesTree($id, $type = 0, $menu_show = null, $status = null, $pid = 0, $fields = null, $is_fifter = 0, $module_id='', $sort = 1, $system_id), (*110)

根据规则ID获取其下所有节点id数组, (*111)

Rule::getSonByRuleId($rule_id);, (*112)

通过rule_id获取所有到顶点的ID, (*113)

Rule::getRootByRuleId($rule_id), (*114)

新增规则节点, (*115)

$data为需要添加的数据,示例:, (*116)

$data=[ 'system_id'=>1, 'name'=>'rule/add', //后台执行的路由,必填
'title'=>'权限管理', //规则节点的标题,必填
'href'=>'链接地址', //前台链接地址,非必填
'pid'=>'0', //上级ID
'status'=>0, //状态,0:启用,1:禁用
'remark'=>'备注', //非必填
'sort'=>'0',//排序,非必填
'menu_show'=>'0',//是否显示菜单,0:不显示,1:显示
'icon'=>'0',//菜单图标 非必填
], (*117)

Rule::add($data), (*118)

获取规则节点的分页列表, (*119)

$page 页码,默认为0, (*120)

$limit 每一页条数,默认为20, (*121)

$system_id 子系统ID,为null时则获取所有系统的规则节点, (*122)

Rule::listOfPagin($page, $limit = 20, $system_id = null), (*123)

获取用户菜单, (*124)

$user_id 用户ID 必填, (*125)

$system_id 系统ID 必填, (*126)

Rule::getMenus($user_id, $system_id, $sort = 1, $pid = 0, $module_id = "", $menu_show = 1, $status = 0, $is_fifter = 1, $fields = null), (*127)

用户相关:, (*128)

判断用户是否有效, (*129)

User::is_valid($user_id), (*130)

根据id获取用户信息, (*131)

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

通过用户ID获取所有权限节点名称数组, (*133)

User::getAccessByUserId($user_id, $status=0, $system_id), (*134)

通过用户ID获取子系统所有所属角色的ID列表, (*135)

User::getRolesByUserId($user_id, $system_id), (*136)

获取用户的分页列表, (*137)

$keywords 查询的关键词,提供username和real_name的模糊查找, (*138)

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

用户-角色相关:, (*140)

给用户分配一个角色, (*141)

$user_id 用户ID, (*142)

$role_id 角色ID, (*143)

UserRole::setRoleByUserId($user_id, $role_id), (*144)

为没有配置角色的用户配置一个基本角色, (*145)

调用此方法需在配置项里配置参数base_role_id的值,该值为你需要指定的一个角色ID, (*146)

UserRole::setBasicRole($user_id), (*147)

为用户批量分配角色, (*148)

$user_id 用户ID, (*149)

$role_id_arr 角色ID 数组, (*150)

$system_id 系统ID 必填, (*151)

UserRole::setUserRole($user_id, $role_id_arr, $system_id), (*152)

根据用户id查询到用户所有的角色信息, (*153)

$user_id 用户ID, (*154)

$fields 获取字段的数组,选填, (*155)

$system_id 系统ID,当获取子系统的该用户对应的角色时则传实际的系统ID;当传NULL时,则获取所有的系统的角色, (*156)

UserRole::getUserRoleByUserId($user_id, $system_id = NULL, $fields = ['*']), (*157)

六、如有任何疑问欢迎加入QQ群:338461207 进行交流, (*158)

if you have any questions, welcome to join QQ group: 338461207, (*159)

The Versions

30/07 2018

dev-master

9999999-dev https://www.monqin.com

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

  Sources   Download

MIT

The Requires

  • php >=5.6.0

 

by senman

user auth yii2 rbac manager system 用户 权限

14/06 2018

1.0.x-dev

1.0.9999999.9999999-dev https://www.monqin.com

yii2的RBAC,基于角色的权限控制,扁平结构,容许一个用户有一个或多个角色的灵活配置,含菜单等

  Sources   Download

MIT

The Requires

  • php >=5.6.0

 

by senman

user auth yii2 rbac manager system 用户 权限

31/05 2018

1.x-dev

1.9999999.9999999.9999999-dev https://www.monqin.com

yii2的RBAC,基于角色的权限控制,扁平结构,容许一个用户有一个或多个角色的灵活配置,含菜单等

  Sources   Download

MIT

The Requires

  • php >=5.6.0

 

by senman

yii2 rbac manager 用户 权限