Изменить вид доступа к загруженному файлу в Elgg

Администраторы / пользователи, вошедшие в систему, могут установить текущий контроль доступа при загрузке файла. Доступны три типа доступа: общедоступный, частный и зарегистрированный пользователь:

  • общедоступный: загруженные файлы могут быть просмотрены и доступны пользователям, которые не вошли в систему

  • личное: никто не сможет просматривать загруженные файлы, кроме пользователя и администратора

  • вошедшие в систему пользователи: только вошедшие в систему пользователи и администраторы могут просматривать и получать доступ к загруженному файлу.

функциональность

Загруженные файлы могут быть просмотрены и доступны в соответствии с управлением доступа, установленным пользователем.

Следовательно, когда общедоступный пользователь (не вошедший в учетную запись) может просматривать и получать доступ к загруженному файлу, для которого для параметра доступа было установлено значение public, но он не сможет видеть файлы, для которых для параметра управления доступом установлено значение «private» или ‘вошел в систему пользователя’.

задача

Я хотел бы изменить контрольный доступ, чтобы общедоступные пользователи (не вошедшие в учетную запись) не могли просматривать или получать доступ к загруженному файлу. Следовательно, даже если пользователь установил настройку управления доступом как общедоступный, не вошедший в систему пользователь не может просматривать и загружать этот загруженный файл, поэтому все, что может видеть публичный пользователь, это пустой список.

Поэтому я хотел бы спросить, должен ли я изменять фреймворк Elgg в каталоге /Elgg/views/default/output/access.php для достижения желаемого результата или я могу изменить его в представлении мода плагина: Elgg / мод / плагин / просмотров / по умолчанию / объект?

0

Решение

Elgg спроектирован так, чтобы быть ориентированным на плагины, поэтому правильный подход заключается в создании вашего собственного плагина, который будет переопределять элементы, которые вам нужны, как из ядра, так и из сторонних плагинов. Мы объясняем мотивацию здесь: http://learn.elgg.org/en/1.12/guides/dont-modify-core.html

Насколько я понимаю, вы не хотите, чтобы файлы были ограничены для зарегистрированных пользователей или более. Для этого уже есть уровень доступа, вам просто нужно применить его.

Нам нужно изменить два элемента:

  1. сохранение файла отображается форма редактирования, чтобы не отображать нежелательные уровни доступа
  2. действие по сохранению файла для отклонения нежелательного значения доступа

Объявление. 1 Вы могли бы переопределить вид forms/file/uploads и заменить вызов input/access с пользовательской версией, которая фильтрует нежелательные значения. Это лучше, чем изменить input/access вид, который используется повсеместно.

Объявление. 2 Вы можете либо переопределить весь file/upload действие (что неприятно из-за копирования тонны логики) или просто использовать подключаемый модуль это сделает дополнительный контроль. Здесь у вас есть ловушка, которая позволяет вам прервать действие при обнаружении неверного входного значения: http://learn.elgg.org/en/1.12/guides/hooks-list.html#action-hooks

1

Другие решения

Как заявил Павел Срока, крайне нежелательно модифицировать основную базовую инфраструктуру Elgg. Следовательно, правильный подход — либо создать плагин, либо модифицировать существующий плагин.

Следовательно, как упоминалось в вопросе, основная задача состоит в том, чтобы предотвратить доступ любого пользователя, не входящего в систему, для просмотра и доступа к перечисленным элементам. Поэтому я реализовал «gatekeeper ()»

gatekeeper () -> функция, позволяющая пользователю управлять выполнением кода, применяя правила контроля доступа. Кроме того, при применении он перенаправляет пользователя, не входящего в систему, на первую страницу, защищая содержимое запрещенной страницы от просмотра.

Наконец, gatekeeper () реализован в следующем каталоге до моего вопроса: elgg / mod / plugin / pages / plugin / all.php

0

По вопросам рекламы [email protected]