Skip to content

字段权限

  • 基于角色的字段权限

CatchAdmin 提供了一个与数据权限一样方便的字段权限控制组合ColumnAccess trait,使用它,将可以无缝在列表对字段可读权限控制。效果如下 CatchAdmin 字段权限-Laravel Admin 这对于需求字段控制的后台需求,将可以大大提高开发效率

权限类型

  • 可读权限 是否可以查询
  • 可写权限 是否可以新增数据库字段或者更新数据库字段

使用

以后台的岗位为例, 只需要在岗位模型上添加下面两行代码

php
use Modules\Permissions\Models\Traits\ColumnAccess;  

class Jobs extends Model
{
    use ColumnAccess;  
}

然后找到这个字段管理列表,配置字段权限 CatchAdmin 字段权限-Laravel Admin 然后点击字段权限,如下图 CatchAdmin 字段权限-Laravel Admin 你可以看到需要管理的表的字段,只需要给字段分配角色即可

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 方法即可。