ghzs / gh-permission
此包最新版本(v1.0)没有可用的许可证信息。
助手的权限验证.
此包的规范仓库似乎已消失,因此该包已被冻结。
v1.0
2019-03-13 03:56 UTC
This package is not auto-updated.
Last update: 2019-05-08 09:03:30 UTC
README
{+ 开发者:PavelHank +}
加载项目
已经上传到 composer 仓库,在项目中需要使用时,用 composer 下载到本地,然后将 composer 生成的 autoload.php 文件加载到项目入口文件
// 切换到项目目录下
$ composer config repo.packagist composer https://packagist.phpcomposer.com // 切换为中国镜像源,速度快点
$ composer require ghzs/gh-permission:v1.0 // 下载包到本地
使用示例
<?php
/**
* 一:首先实例化
* 1. 配置 driver, app_id.表示会在指定的地方缓存数据。需要需要处理数据同步的事情。
* 2. 只配置 app_id,表示每次都到权限中心获取数据。效率可能不理想。
*
* app_id 由 usersea 分配.
*/
// MongoDB 存储权限数据.
$permission = \Ghzhushou\permision\permission::instance([
"driver" => 'mongodb',
"mongodb_uri" => 'mognodb://127.0.0.1',
"app_id" => "5c7a38776ed26d68af4c7a90"
]);
// Redis 存储权限数据
$permission = \Ghzhushou\permision\permission::instance([
'driver' => 'redis',
'redis' => [
'addr' => '127.0.0.1',
'port' => '2452',
'auth' => '123456',
],
"app_id" => "5c7a38776ed26d68af4c7a90"
]);
// 文件存储权限数据
// 文件夹需要已经创建并授予读写的权限
$permission = \Ghzhushou\permision\permission::instance([
'driver' => 'file',
'filepath' => '/var/permission',
"app_id" => "5c7a38776ed26d68af4c7a90"
]);
/**
* 二:指定检查那个用户的权限信息。 user_id 要使用 usersea 中的 user_id。
*/
$permission->set_user_id('the_user_id');
/**
* 获取用户权限.
*/
// 用户的权限列表.
$rows = $permission->list();
print_r($rows);
/**
* array(
* array(
* "view" => "menu",
* "name" => "文章管理菜单",
* "action"=> "articles_menu",
* ),
* ...
* );
*/
// 检测用户是否拥有某个权限.
var_dump($permission->allow('update_articles'));
/**
* bool(false) or bool(true)
* 没有权限 or 有权限
*
*/
/**
* 权限同步。
* 如果配置了实时获取数据,不需要处理这些事情。
* 在 usersea-admin 后台对用户权限进行增删时,将数据的变动同步到客户端。
*/
// 1. 手动同步,所有用户的权限都被同步,建议异步执行.
// 需要提供一个回调接口,并提交给 usersea。在usersea的回调请求中调用该方法。
// 不需要调用 set_user_id($user_id); 方法指定用户.
$permission->callback();
// 2. 单个用户权限同步。
// 用户退出或登录时,调用 remove() 方法本地数据删除,然后再通过 sync() 方法更新数据。
// 不管权限中心的数据有没有变动,都会在用户重新登录时更新数据。
$permission->remove();
// 登录的时候显示调用 sync() 方法或 或调用 allow()、list() 方法时,隐式调用。
// 调用之前需要调用 set_user_id($user_id); 方法指定用户。
$permission->sync();