修改Elgg中查看上传文件的权限
Modify view uploaded file access in Elgg
Admins/logged-in-users 能够在上传文件时设置当前访问控制。三种访问类型是:public、私有和登录用户:
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 您可以 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
Admins/logged-in-users 能够在上传文件时设置当前访问控制。三种访问类型是:public、私有和登录用户:
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 您可以 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