ghzs / gh-permission
There is no license information available for the latest version (v1.0) of this package.
助手的权限验证.
This package's canonical repository appears to be gone and the package has been frozen as a result.
v1.0
2019-03-13 03:56 UTC
This package is not auto-updated.
Last update: 2019-05-08 09:03:30 UTC
README
{+ Developer: 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();