数据权限

介绍

在实际开发中,需要设置用户只能查看哪些部门的数据,这种情况一般称为数据权限。 例如对于销售,财务的数据,它们是非常敏感的,因此要求对数据权限进行控制, 对于基于集团性的应用系统而言,就更多需要控制好各自公司的数据了。 如设置只能看本公司、或者本部门的数据,对于特殊的领导,可能需要跨部门的数据, 因此程序不能硬编码那个领导该访问哪些数据,需要进行后台的权限和数据权限的控制。

全局设置

config/autoload/mineadmin.php 里全局设置是否开启数据权限

return [
    // 是否启用数据权限
    'data_scope_enabled' => true,
];

注意事项

超管(创始人)

超级管理员 superAdmin 默认为所有访问权限和数据权限,其角色同样如此。

数据表相关

若想使用数据权限,MineAdmin自带的数据表请忽略。 但自建的数据表都需要有 created_by 字段,且类型为bigint

使用方法

MineAdmin 通过 Builder 类的 macro 方法扩展出了一个方法 userDataScope()

不管你是用 查询构造器 方式还是使用 模型查询,都可以使用该方法

// 查询构造器使用
Db::table('user')->userDataScope()->get();

// 模型使用
User::query()->userDataScope()->get();

这样,查询出的数据会自动设置该用户所允许查看的数据了。

提示

如果使用系统封装好的curd,那么系统已经默认调用该方法了。