# 数据权限控制

数据权限不同于菜单规则(路由与权限) (opens new window),它是:在单个后台管理功能中,不同管理员只可以查看/编辑有权数据行的权限控制,BuildAdmin 提供全面的数据权限控制功能,在需要开启数据权限的控制器文件内,重写$dataLimit属性即可。

// app/admin/controller/TestBuild.php 文件

// 控制器需继承 Backend 基类
class TestBuild extends Backend
{
    /**
     * 开启数据限制
     */
    protected bool|string|int $dataLimit = false;

    /**
     * 数据限制字段,数据表内必须存在此字段
     */
    protected string $dataLimitField = 'admin_id';

    /**
     * 数据限制开启时自动填充字段值为当前管理员id
     */
    protected bool $dataLimitFieldAutoFill = true;

    // ...
}

以上三个控制器属性共同实现了 BuildAdmin 的数据权限控制功能,以下对它们分别解释。

# dataLimit

  • 下文中的可查代表有权限,此时也拥有编辑删除对应数据行的权限
  • 超管可查所有人的数据
  • 数据添加人可查自己的添加的数据
  • 下表提到的权限节点,指的是菜单规则(路由与权限) (opens new window),中的权限节点。
解释 备注
false 关闭数据权限控制 所有数据所有管理员可查,需拥有该管理功能的权限节点
personal 仅限个人 谁添加的谁可查
allAuth 拥有某管理员所有的权限时 某管理员拥有添加人的所有权限节点时,可查该添加人的数据
allAuthAndOthers 拥有某管理员所有的权限并且还有其他权限时 某管理员拥有添加人的所有权限节点时同时还有另外的权限节点,可查该添加人的数据
parent 上级分组中的管理员可查 某管理员在管理员角色组中是添加人的上级,则该管理员可查添加人的数据
管理员角色组的id 指定角色组中的管理员可查 指定一个管理员角色组中的管理员们可以查询所有人的数据,分组id请开发者直接在admin_group数据表内查得

# dataLimitField

  • 数据限制字段,此字段保存数据添加人的id号,此字段必须在对应数据表内存在。
  • 当使用crud时:因为crud还未对数据权限进行额外的兼容,可以先不设计dataLimitField字段,生成代码后再添加此字段;也可以设计好此字段,在代码生成之后,找到对应的popupForm.vue删除此字段的FormItemrules

# dataLimitFieldAutoFill

通过将此属性设置为true来开启dataLimitField字段的自动维护,默认就是开启的。开启后,管理员在添加数据时,会自动在此字段内写入当前管理员的id号。