Yii2:根据权限隐藏搜索结果

时间:2018-04-23 17:40:28

标签: yii2 rbac

在我的表格中我有:

PRODUCT
id_product
name
status

状态采用以下值:

1 (Active)
2 (Inactive)
3 (Archived)

在产品索引视图中,我希望用户根据权限查看某些状态。例如:

  • 管理员会看到状态为1,2和3的记录。
  • 主持人观点:1和2
  • 用户观点:1

我该怎么做?我有哪些替代方案?

1 个答案:

答案 0 :(得分:2)

您可以为搜索模型添加条件(我猜您有一个ProductSearch.php文件),以便根据用户的角色过滤结果。

我从未使用过Yii的RBAC,但我认为您有一种获取用户角色的方法,如下所述:https://stackoverflow.com/a/25248246/4338862

因此,在搜索模型中,我会在网格过滤条件后添加一个或多个条件:

if($isUser) {     
    $query->andFilterWhere([
        'status' => 1,
    ]);
}
elseif($isModerator) {
    $query->andFilterWhere(['or',
       ['status' => 1],
       ['status' => 2]
    ]);
}

如果你需要,我可以给你一个更详细的答案。