Ограничение к файлам mediaSource для анонимных пользователей frontend
Есть mediaSource с basePath = "/assets/components/dbd/files/" куда из моего компонента грузятся файлы и линкуются с записями в БД.
Вопрос: Как сделать так, что бы файлы из каталога "/assets/components/dbd/files/" не были доступны анонимным(не авторизованным) пользователям? А авторизованным в modx и имеющим определенную роль были доступны.
Пример:
Если создать файл test.txtt положить по пути /assets/components/dbd/files/ то он свободно будет доступен по url: site_url + /assets/components/dbd/files/test.txt без авторизации на сайте.
Вопрос: Как сделать так, что бы файлы из каталога "/assets/components/dbd/files/" не были доступны анонимным(не авторизованным) пользователям? А авторизованным в modx и имеющим определенную роль были доступны.
Пример:
Если создать файл test.txtt положить по пути /assets/components/dbd/files/ то он свободно будет доступен по url: site_url + /assets/components/dbd/files/test.txt без авторизации на сайте.
Комментарии: 3
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Сделал временное решение, но мне оно не очень нравится. описываю решение:
в папку которая указана в basePath положил файл .htaccsess т.к. сервер на apache2 со строкой
Что запретило доступ к файлам по прямой ссылке всегда, но php имеет к ним доступ.
Поэтому создал сниппет с кодом:
Тут мы обращаемся к имени файла переданного в сниппет и выдаем его в буфер вывода с соответствующими заголовками.
Вызвал сниппет [[!file_download?&filename=`[[!#GET.fn]]`]] передал ему get параметр содержащий имя файла. Сниппет вызван на странице которая принадлежит группе ресурсов на которую настроен доступ только для авторизованных.
Вроде работает, но уверен есть решение лучше. Оставлю это тут, если кто-то будет искать подобное решение, и надеюсь что более опытные пользователи посмотрят решение и предложат лучшую альтернативу.
Я буквально недавно решал подобную задачу, в рамках микрофреймворка slim и там было проще, в том плане, что сама архитектура фреймворка позволяет все файлы приложения хранить на уровень ниже, чем публичная директория, куда смотрит веб сервер, поэтому получить файл по прямой ссылке просто невозможно.