管理员/登录用户可以在上传文件时设置当前访问控制。有三种访问类型:公共,私有和登录用户:
public:未登录的用户可以查看和访问上传的文件
私密:没有人能够查看上传的文件,除了用户和管理员
登录用户:仅登录用户,管理员才能查看和访问上传的文件。
功能
可以查看和访问上传的文件,这些文件与用户设置的访问控制有关。
因此,当公共用户(未登录帐户)可以查看和访问上传文件时,访问设置已设置为公开,但无法查看控件访问设置已设置为& #39;私人'或者'登录用户'。
任务
我想要做的是更改控制访问权限,以便公共用户(未登录帐户)无法查看或访问上传的文件。因此,即使用户已将控制访问设置设置为公共,未登录的用户也无法查看和访问该上载的文件,因此,所有公共用户都可以看到是一个空列表。
因此,我想问一下,我应该更改目录/Elgg/views/default/output/access.php中的Elgg框架以实现所需的结果,还是可以在插件mod的视图中更改它:Elgg / mod / plugin / views / default / object?
答案 0 :(得分:1)
Elgg旨在以插件为中心,因此正确的方法是创建自定义插件,该插件将覆盖核心和第三方插件所需的元素。我们在这里解释动机:http://learn.elgg.org/en/1.12/guides/dont-modify-core.html
据我所知,您不能强制将文件限制为登录用户或更多用户。已有一个访问级别,您只需执行它。
我们需要改变两个要素:
广告。 1您可以override the view forms/file/uploads
将input/access
的来电替换为过滤不需要的值的自定义版本。它比改变input/access
在整个地方使用的观点要好。
广告。 2您可以覆盖整个file/upload
操作(由于复制大量逻辑而令人讨厌)或只使用将执行其他控制的plugin hook。在这里,您可以使用钩子,在检测到无效输入值时允许您中断操作:http://learn.elgg.org/en/1.12/guides/hooks-list.html#action-hooks
答案 1 :(得分:0)
如PawełSroka所述,修改主要的Elgg核心框架是非常不可取的。因此,正确的方法是创建插件或修改现有插件。
因此,如问题中所述,主要任务是防止任何非登录用户具有查看和访问列出项目的权限。因此,我所做的是实现'gatekeeper()'
gatekeeper() - >功能允许用户通过应用访问控制规则来管理代码的执行方式。此外,在应用时,它会将非登录用户转发到首页,从而保护受限制页面的内容不被查看。
最后,'gatekeeper()'在我的问题之前在以下目录中实现:elgg / mod / plugin / pages / plugin / all.php