修改Elgg中视图上传文件的访问权限


Modify view uploaded file access in Elgg

管理员/登录用户可以在上传文件时设置当前访问控制。三种类型的访问是:公共、私有和登录用户:

  • public:上传的文件可以被未登录的用户查看和访问

  • private:除了user和admin,没有人可以查看上传的文件

  • 已登录的用户:只有已登录的用户和管理员可以查看和访问上传的文件。

上传的文件可以根据用户设置的访问控制进行查看和访问。

因此,当公共用户(未登录帐户)可以查看和访问访问设置已设置为公共的上传文件时,但将无法看到控制访问设置已设置为"私人"或"登录用户"的文件。

我想做的是改变控制访问,这样公共用户(未登录帐户),不能查看或访问上传的文件。因此,即使用户将控制访问设置为public,未登录的用户也无法查看和访问该上传的文件,因此,public用户只能看到一个空列表。

因此,我想问的是,我是否应该在目录/Elgg/views/default/output/access.php中更改Elgg框架以达到预期的结果,或者我可以在插件mod的视图中更改它:Elgg/mod/plugin/views/default/object?

Elgg被设计为以插件为中心,所以正确的方法是创建你的自定义插件,它将覆盖你从核心和第三方插件中需要的元素。我们在这里解释动机:http://learn.elgg.org/en/1.12/guides/dont-modify-core.html

据我所知,你不想强制文件被限制在登录用户或更多。已经有一个访问级别了,你只需要执行它。

我们需要改变两个元素:

  1. 文件保存显示编辑表单,不显示不需要的访问级别
  2. 文件保存操作拒绝不需要的访问值

广告。您可以覆盖视图forms/file/uploads,并使用过滤不需要的值的自定义版本替换对input/access的调用。这比改变input/access视图要好,这是在所有地方使用。

广告。2你可以重写整个file/upload行动(这是讨厌的,由于复制大量的逻辑)或只是使用插件挂钩,将做额外的控制。这里有一个钩子,它允许您在检测到无效输入值时中断操作:http://learn.elgg.org/en/1.12/guides/hooks-list.html#action-hooks

正如paweowsroka所说,修改主Elgg核心框架是非常不可取的。因此,正确的方法是创建一个插件或修改现有的插件。

因此,正如问题中提到的,主要任务是防止任何非登录用户具有查看和访问列出项目的访问权限。因此,我所做的是实现'gatekeeper()'

gatekeeper() ->函数允许用户通过应用访问控制规则来管理代码的执行方式。此外,当应用时,它会将非登录用户转发到首页,从而保护受限制页面的内容不被查看。

最后,'gatekeeper()'在我的问题之前在以下目录中实现:elgg/mod/plugin/pages/plugin/all.php