php中permission,thinkphp-permission RABC 权限管理包

thinkphp-permission RABC 权限管理包

1918bd87717690f751845867f516cd4f.png

Github地址:

DEMO展示:

账号 admin

密码 admin123

支持功能如下直接、间接获取用户权限

角色获取权限

角色赋予权限

用户赋予角色

一键生成权限节点(支持多种生成节点方式)

支持路由生成

控制器文件扫描生成

为什么要开发它

ThinkPhp 生态包生态杂乱无章,它支持 composer 一键安装,整合tp最新的预加载及其关联语法进行操作

参阅了其他的包之后,它

1、能快速完成权限管理的一系列操作

2、使用 Trait 引入, 极其简单

3、遵循 OPP 面向对象思路,可扩展,部分参数可在您的需求上配置

4、权限控制撇弃以往的继承 Base 父方法的方式进行,全新引入了 中间件 思想, 何为中间件: tp5.1 文档- 定义中间件

5、权限控制支持方法级别的控制,当然如果在此基础上,可以完成细粒度的权限控制

缺点

1.1版本 暂时只支持 大于 > thinkphp 5.1

1.1版本 只能使用路由生成节点技术永远是需要进步的,也不准备兼容低版本

安装

镜像源

引入方式命令行下输入:

composer require surest/thinkphp-permission

或者在 composer.json 中添加

....

"require": {

"php": ">=5.6.0",

"surest/thinkphp-permission": "^0.1.0"

},

.....

执行命令

composer update

使用

数据库导入root #> mysql -uusername -p

mysql #> create database permission;

mysql #> source vendor/surest/thinkphp-permission/permission.sql;

初始化权限节点方式

引入生成节点文件: demouse Surest\Model\Permission as PermissionModel;

use Surest\Traits\TreeNode;

..

class {

use TreeNode; // 引入这个 trait 即可

public function init_permission() {

// 执行这个方法后,节点就自动生成了

$this->init_node((bool) request()->param('is_delete', 0));

}

}生成权限节点的原理大概如下, 获取到所有已知的路由,反射获取他们的注释、方法名称等等

~~!! 权限节点的名称注释如下

1、类/**

* 权限管理

* Class Permission

* @package app\admin\controller

*/

class Permission extends BaseController

{

..

}

/**

* 权限管理

*/

public function index()

{

....

}

以上的即为路由名称

使用

创建权限PermissionModel::create($data);

创建角色RoleModel::create(['name' => $data['name'], 'remark' => $data['remark'] ?? ''])

以上的没什么好说的, 引入的上面model 的方式如下use Surest\Model\Role as RoleModel;

use Surest\Model\Permission as PermissionModel;

实例化获取一个user使用 `use HasRoles`;

...

use Surest\Traits\Helpers;

class User extends Model

{

use HasRoles;

...

`$user = User::find(1);`

获取所有权限$user->getAllPermissions();

--

$is_tree bool 是否渲染成树结构

传入 getAllPermissions(true); 会生成一个树结构的权限节点,可以用来生成菜单

检查是否拥有某个权限// 传入的值或者 权限模型 或者 权限id

$user->can(1);

$permission = PermissionModel::find(1);

$user->can(permission); # 返回 bool

获取当前用户的所有角色$user->getAllRoles();

给角色赋予一个权限// 传入的值或者 权限模型 或者 权限id

$role->givePermissionTo($permission);

给角色赋予多个权限$role->syncPermissions([$user_permission['id'], $article_permission['id']]);

当前角色所有的权限$role->getAllPermissions()

为用户赋予一个直接权限$user->givePermissionTo($permission);

获取用户的所有权限$user->getAllPermissions()

使用 DEMO使用的操作没有详尽覆盖,可以参考源码,全程中文注释,也可以用来学习

MIT

本文由 邓尘锋 创作,采用 知识共享署名4.0 国际许可协议进行许可

本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名

最后编辑时间为: Jul 20, 2019 at 10:03 pm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值