主题
字段权限
- 基于
角色
的字段权限
CatchAdmin 提供了一个与数据权限一样方便的字段权限控制组合ColumnAccess
trait,使用它,将可以无缝在列表对字段可读权限控制。效果如下 这对于需求字段控制的后台需求,将可以大大提高开发效率
权限类型
可读权限
是否可以查询可写权限
是否可以新增数据库字段或者更新数据库字段
使用
以后台的岗位为例, 只需要在岗位模型上添加下面两行代码
php
use Modules\Permissions\Models\Traits\ColumnAccess;
class Jobs extends Model
{
use ColumnAccess;
}
然后找到这个字段管理列表,配置字段权限 然后点击字段权限,如下图 你可以看到需要管理的表的字段,只需要给字段分配角色即可
INFO
只有分配了字段权限的字段才会进行权限控制,没有分配不会进行权限控制
ColumnAccess
php
trait ColumnAccess
{
/**
* @param array $columns
* @return array
*/
public function readable(array $columns): array
{
return $this->filter($columns);
}
/**
* @param array $columns
* @return array
*/
public function writable(array $columns): array
{
return $this->filter($columns, false);
}
}
readable 方法可以过滤当前模型的字段
writable 方法可以过滤当前模型的字段
一般情况下,Laravel 的 Select 查询有以下几种情况
- select(['*']) 使用 *
- 单独的 column
- 别名的 column (例如: user_name as username)
- 连表的 column (例如: user.name)
- 连表别名的 column (例如: user.name as username)
对于这几种查询情况,无需处理,直接调用 readable
方法即可。