Drupal 7: как ограничить доступ к файлам для определенных пользовательских ролей
Мне нужно разработать сайт на Drupal 7. У меня есть несколько типов контента с полями File в CCK. И доступ к узлам этих типов должен быть предоставлен только конкретной роли пользователя Drupal. И в любой момент администратор сайта должен иметь возможность сделать эти Узлы "общедоступными" или "приватными".
Я могу сделать узлы видимыми только для определенных пользовательских ролей, но этого недостаточно. Если анонимный пользователь знает путь к файлу ( www.mysite.org/hidden_files/file1), он может загрузить его.
Какой самый элегантный способ решить эту проблему?
Заранее спасибо.
1 ответ
Проверьте эту документацию здесь: http://drupal.org/documentation/modules/file
В частности, раздел под названием "Управление расположением файлов и доступом к ним", в котором говорится о настройке частного хранилища данных (все поддерживается Drupal 7, его просто нужно настроить).
Перефразируя, создайте папку, такую как:
сайты / по умолчанию / файлы / частные
Поместите файл .htaccess в эту папку со следующим, чтобы предотвратить прямой доступ к файлам через Интернет:
Отрицать все
(в документации утверждается, что следующий шаг выполняет вышеуказанные шаги автоматически, к сожалению, я не проверял это, но вы можете сэкономить время, если пропустите два вышеупомянутых шага)
Войдите в интерфейс администратора Drupal, перейдите в / admin / config / media / file-system, настройте частный URL-адрес и выберите личные файлы, обслуживаемые Drupal, в качестве метода загрузки по умолчанию.
Чтобы определить детальный доступ к узлам и полям, вы можете использовать Content Access: http://drupal.org/project/content_access
Вам также нужно будет отредактировать типы вашего контента и установить поля загрузки файлов / изображений, чтобы сохранить загруженные файлы в личные файлы вместо публичных файлов.
На этом этапе разрешения на уровне узла и поля будут определять, разрешено ли пользователям получать доступ к файлам, которые будут обслуживаться через перехватчики меню, которые проверяют учетные данные перед передачей файла.
Надеюсь это поможет.