воскресенье, 30 августа 2015 г.

MODX Ограничение доступа к источнику файлов. Каталог upload.

При подготовке сайта к использованию контент менеджером следует опасаться того, что им открыт доступ к файлам ядра системы и прочим жизнено важным файлам сайта, которые случайно могут удалиться/переместиться/похититься пришельцами.
Чтобы избежать таких неприятностей следует создать пользователя content_manager(например) и выделить ему папку upload для того чтобы он использовал её в качестве хранилища файлов, и не мог ничего натворить за её пределами.
В итоге должно получиться что-то типа этого:
Для того чтобы этого добиться сперва создадим папку upload:

После этого создадим источник файлов "Upload". Для этого заходим в Медиа => Источники файлов, и там создаем его:
После чего заходим на страницу редактирования и указываем пути к папке upload:

Ну вот, мы добились того, что у нас сейчас есть два источника файлов: FileSystem - с полным доступ к файлам с корня каталога сайта, и Upload - с доступом к файлам с папки upload, в этом можно убедиться создав или закинув в папку upload какойнибудь файл:
Теперь логично предположить что для того чтобы контент менеджер имел доступ только к источнику файлов Upload нужно чтобы у него не было доступа к источнику файлов Filesystem, а лучше чтобы он вообще его не видел. Для этого можно использовать готовую политику доступа из моего репо: зайти в контроль доступа и импортировать её как это описано в этой статье на примере политики доступа "Content Manager", после чего присвоить её источнику FileSystem в Правах доступа группы пользователей "Content Managers":
Теперь просто добавим наш новый источник файлов в доступы группы пользователей, чтобы получилось как-то так:
Ну вот и все, после Перезагрузки прав доступа мы можем зайти как пользователь content_manager и проверить:
Теперь о том как использовать наш источник файлов в дополнительных полях, где подразумевается работа с файловой системой(например TV Изображение).
Для использования достаточно указать в дополнительном поле на соответствующей вкладке наш источник файлов Upload:
После этого при указании изображения с помощью нашего TV в редактировании ресурса будет виден только источник файлов Upload, и при последующем выводе в теле страницы будет добавляться 'upload/' к пути файла.
Насчет последнего: чтобы этого добиться при использовании нашего TV в MIGX необходимо на соответствующей вкладке указать source From: tv, как это сделано в конфиге images-tv-upload в моем репо.

Ссылки:
Статья - инструкция по созданию группы пользователей Content Managers
Политика доступа None Media для ограничения доступа к истонику файлов
Конфиг Images TV Upload с использованием TV image и его источника файлов
Оффициальная документация по MODX Media Sources

4 комментария:

  1. Слушай, я создал этот дополнительный медиаисточник, выбираю его даже для обычного TV, а пути к файлам он не видит целиком и не выводит на странице. Почему? Что ему надо еще. Голову уже сломал

    ОтветитьУдалить
  2. Он не правильно путь строит и все тут

    ОтветитьУдалить
  3. Спасибо! Внесу свои 5 коп:
    Файловая система по умолчанию стояла Filesystem, поэтому контент-менеджер в вкладке "Медиа" - "Управление медиа" при загрузке видел слева "1" вместо папки "Upload".
    Устранилось путем изменения системной настройки default_media_source. Но НЕ ДЛЯ ВСЕХ, а во вкладке Настройки конкретно для Группы пользователей Content Manager.

    ОтветитьУдалить