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();