dmstr/yii2-active-record-permissions

1.2.3 2024-01-25 13:09 UTC

README

该包已从 https://github.com/dmstr/yii2-db 提取

安装

设置

通用用法

配置选项

在应用配置中

    'params' => [
        'ActiveRecordAccessTrait' => [
            'enableRecursiveRoles' => true
        ],
    ],

注意:静态属性使用 enableRecursiveRoles 已弃用。

示例

特质

dmstr\activeRecordPermissions\ActiveRecordAccessTrait

选项 1

如何为你的活动记录模型配备访问控制

  • 使用 db/migrations/m160609_090908_add_access_columns 中的更新迁移

    • 设置所有 $tableNames 以进行更新并运行迁移

此迁移将可用的访问检查列添加到您的数据库表

'access_owner',
'access_read',
'access_update',
'access_delete',
'access_domain',
  • use \dmstr\activeRecordPermissions\ActiveRecordAccessTrait; 添加到您的活动记录模型

  • (更新您的 CRUD)

RBAC 权限

选择权限

  • access.availableDomains:any

设置默认值的权限

  • access.defaults.accessDomain:global
  • access.defaults.updateDelete:<ROLE>

如果您想自动设置,请在 Model::rules() 中添加默认值规则的规则

[
    [
        'access_update',
        'access_delete',
    ],
    'default',
    'value' => self::getDefaultAccessUpdateDelete()
],

选项 2

只需在我们的 AR 模型中覆盖此方法,并将您拥有的/想要的访问字段设置为您拥有的/想要的字段名!

默认

public static function accessColumnAttributes()
{
   return [
       'owner'  => 'access_owner',
       'read'   => 'access_read',
       'update' => 'access_update',
       'delete' => 'access_delete',
       'domain' => 'access_domain',
   ];
}

自定义

public static function accessColumnAttributes()
{
    return [
        'owner'  => 'user_id',			// the column name with owner permissions
        'read'   => 'read_permission',	// the column name with read permissions
        'update' => false, 				// will do no access checks for update
        'delete' => false, 				// will do no access checks for delete
        'domain' => 'language',			// the column name with the access domain permission
    ];
}

㊙️ 恭喜,您现在可以管理活动记录上的特定访问检查了!

💡 访问选项

  • 所有访问选项 *

  • 可分配的特定 RBAC 角色和权限

    • 单或多个
      • *
      • Role1,Role2,Permission1,...
  • 限制对特定域/语言的访问

    • deen
  • Owner 获得对其他给定权限的所有访问

    • 每个活动记录都可以有一个确切的所有者权限,该权限高于 access_readaccess_updateaccess_delete

计划更新

  • ActiveRecordAccessTrait
    • 在 CRUD 中使用 select2 多选框进行输入(域、读取、更新、删除)
      • 设置器:authItemArrayToString()
      • 获取器:authItemStringToArray()

dmstr 构建