修改Elgg中查看上传文件的权限

Modify view uploaded file access in Elgg

Admins/logged-in-users 能够在上传文件时设置当前访问控制。三种访问类型是:public、私有和登录用户:

功能

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

因此,当 public 用户(未登录帐户)可以查看和访问访问设置已设置为 public 的上传文件时,将无法查看文件哪个控制访问设置已设置为 'private' 或 'logged in user'.

任务

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

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

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

据我了解,您不想强制将文件限制为登录用户或更多用户。已有相应的访问级别,您只需强制执行即可。

我们需要改变两个元素:

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

广告。 1 您可以 override the view forms/file/uploads 并将对 input/access 的调用替换为过滤不需要的值的自定义版本。这比改变到处使用的 input/access 视图要好。

广告。 2 您可以覆盖整个 file/upload 操作(由于复制大量逻辑而令人讨厌)或只使用 plugin hook that will do additional control. Here you have the hook that allows you to break action when you detect invalid input value: http://learn.elgg.org/en/1.12/guides/hooks-list.html#action-hooks

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

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

gatekeeper() -> function to allow user to manage how code gets executed by applying access control rules. Furthermore, when applied, it will forward non-login user to front page thus protecting the content of the restricted page from being viewed.

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