myzero1/yii-permission

一个支持如Yii中RBAC访问控制模型的授权库。它基于Casbin。

维护者

详细信息

gitee.com/myzero1/yii-permission

dev-master 2023-11-09 10:28 UTC

This package is not auto-updated.

Last update: 2024-09-13 12:49:28 UTC


README

Build Status Coverage Status Latest Stable Version Total Downloads License

在Yii 2.0 PHP框架中使用Casbin

安装

获取Composer包

在您的Yii 2.0项目的composer.json中要求此包。这将下载包。

composer require casbin/yii-permission

配置应用

为了使用此扩展,您需要在您的应用配置中配置Casbin类。

return [
    //....
    'components' => [
        'permission' => [
            'class' => \yii\permission\Permission::class,
            
            /*
             * Casbin model setting.
             */
            'model' => [
                // Available Settings: "file", "text"
                'config_type' => 'file',
                'config_file_path' => '/path/to/casbin-model.conf',
                'config_text' => '',
            ],

            // Casbin adapter .
            'adapter' => \yii\permission\Adapter::class,

            /*
             * Casbin database setting.
             */
            'database' => [
                // Database connection for following tables.
                'connection' => '',
                // CasbinRule tables and model.
                'casbin_rules_table' => '{{%casbin_rule}}',
            ],
        ],
    ]
];

用法

快速入门

安装完成后,您可以执行如下操作


$permission = \Yii::$app->permission;

// adds permissions to a user
$permission->addPermissionForUser('eve', 'articles', 'read');
// adds a role for a user.
$permission->addRoleForUser('eve', 'writer');
// adds permissions to a rule
$permission->addPolicy('writer', 'articles','edit');

您可以使用如下方式检查用户是否有权限

// to check if a user has permission
if ($permission->enforce("eve", "articles", "edit")) {
    // permit eve to edit articles
} else {
    // deny the request, show an error
}

使用Enforcer API

它提供了一套丰富的API,以方便对策略的各种操作。

获取所有角色

$permission->getAllRoles(); // ['writer', 'reader']

获取策略中的所有授权规则。

$permission->getPolicy();

获取用户拥有的角色。

$permission->getRolesForUser('eve'); // ['writer']

获取具有角色的用户。

$permission->getUsersForRole('writer'); // ['eve']

确定用户是否有角色。

$permission->hasRoleForUser('eve', 'writer'); // true or false

为用户添加角色。

$permission->addRoleForUser('eve', 'writer');

为用户或角色添加权限。

// to user
$permission->addPermissionForUser('eve', 'articles', 'read');
// to role
$permission->addPermissionForUser('writer', 'articles','edit');

为用户删除角色。

$permission->deleteRoleForUser('eve', 'writer');

删除用户的所有角色。

$permission->deleteRolesForUser('eve');

删除角色。

$permission->deleteRole('writer');

删除权限。

$permission->deletePermission('articles', 'read'); // returns false if the permission does not exist (aka not affected).

为用户或角色删除权限。

$permission->deletePermissionForUser('eve', 'articles', 'read');

删除用户或角色的权限。

// to user
$permission->deletePermissionsForUser('eve');
// to role
$permission->deletePermissionsForUser('writer');

获取用户或角色的权限。

$permission->getPermissionsForUser('eve'); // return array

确定用户是否有权限。

$permission->hasPermissionForUser('eve', 'articles', 'read');  // true or false

有关更多API,请参阅Casbin API

定义自己的model.conf

支持的模式.

学习Casbin

您可以在网站上找到Casbin的完整文档。

myzero1/yii-permission

一个支持如Yii中RBAC访问控制模型的授权库。它基于casbin。在网站上

rbac

sadf