如何在SilverStripe的File查询中添加当前用户视图权限过滤?
解决方案
直接在你的查询链末尾添加->filterByPermission('View')方法即可,这个方法会在SQL查询层面直接过滤掉当前用户无权限查看的文件,确保返回的结果集只包含有权限的记录,分页统计、列表展示都会基于正确的数据集。
修改后的完整代码:
$files_basic = File::get()->filterAny([ 'Title:PartialMatch' => $s, 'FileFilename:PartialMatch' => $s, 'Description:PartialMatch' => $s, 'DisplayName:PartialMatch' => $s ])->filterByPermission('View');
补充说明
filterByPermission('View')会自动处理SilverStripe的权限继承逻辑,比如文件所在文件夹的权限设置也会被纳入判断,不需要额外编写文件夹权限过滤的代码。- 如果需要针对特定用户(而非当前登录用户)过滤权限,可以传入第二个参数,例如
filterByPermission('View', $specificMember)。
内容的提问来源于stack exchange,提问作者Will
相关产品推荐
相关产品推荐

