2015-08-31 3 views
0

Администраторы/зарегистрированные пользователи могут установить текущий контроль доступа при загрузке файла. Три типа доступа является: государственным, частным и авторизованы пользователями:Изменить доступ к загруженному файлу в Elgg

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

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

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

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

Файлы, загруженные можно просматривать и доступ в отношении контроля доступа, установленного пользователем.

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

Задача

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

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

ответ

1

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

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

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

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

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

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

+0

Позвольте мне подтвердить с вами, чтобы свести к минимуму любые недоразумения. Редактирование Elgg-core - это большой НЕТ, так как это испортит всю структуру, и будущее обслуживание Elgg будет затруднено. Во-вторых, я знаю, что уровень доступа уже существует, однако мне нужно перезаписать параметр «Общие», так что пользователь, не зарегистрированный в сети, не сможет просматривать загруженные файлы независимо от настроек доступа. Один из методов - удалить «PUBLIC» из опции, другой - переопределить представление, как указано в Ad.1. Кроме того, я смущаюсь с вашей точки зрения в изменении двух элементов. – EEE

+0

cont ... Я хотел бы знать, что вы подразумеваете под 2 элементами, о которых вы говорите. Я согласен с тем, что редактировать вход/доступ нецелесообразно, поскольку он широко используется в других моделях и в другом каталоге, это будет очень грязно. – EEE

+0

Спасибо, я разрешил его, мне просто нужно добавить gatekeeper(), чтобы эта страница была недоступна для пользователей, которые не вошли в систему. Я добавил это в следующую директорию путей: mod/plugin/pages/plugin/all.php – EEE

0

Как заявлено Paweł Sroka, крайне нецелесообразно изменять основную структуру ядра Elgg. Следовательно, правильный подход - либо создать плагин, либо изменить существующий плагин.

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

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

Наконец, "привратник() осуществляется в следующем каталоге до моего вопроса: Elgg/мод/плагин/страниц/плагин/all.php

Смежные вопросы