Варианты «Безопасные медиа» + «Включить загрузки S3», похоже, ломают логотипы категорий.
Недавно я обнаружил, что загруженные документы можно просматривать и скачивать по прямой ссылке пользователи, у которых нет доступа к закрытому посту, в котором был загружен документ. Я понимал, что для использования функции «Безопасные медиа» сначала нужно включить загрузки S3, поэтому я сначала включил их и вручную скопировал загрузки с сервера Discourse в бакет S3. Затем я последовал этой теме, чтобы включить «Безопасные медиа»:
После выполнения этой процедуры мне пришлось выполнить discourse remap, чтобы изменить путь /uploads/default/ на //bucketname-etc-etc/. После remap я выполнил rake posts:rebake, и в целом всё выглядело хорошо. Все остальные загрузки (документы и изображения в постах, изображения брендинга сайта и т. д.) по-прежнему отображались и ссылались корректно после включения «Безопасных медиа» и выполнения соответствующих задач rake и remap. Мне пришлось повторно загрузить аватары пользователей и логотипы групп, но после этого они все корректно отображались и имели новые короткие URL-адреса и URL-адреса secure-media-uploads, как и ожидалось.
Однако я заметил, что изображения логотипов категорий больше не отображаются. При проверке в режиме разработчика браузера я обнаружил, что при повторной загрузке изображения логотипа категории создавался правильный URL secure-media-uploads, и изображение отображалось корректно. Но как только я нажимал «Сохранить категорию», страница категории обновлялась и пыталась отобразить изображение, напрямую обращаясь к не подписанному URL AWS S3, из-за чего изображение не отображалось:
Каждая страница в Discourse, где отображается изображение логотипа категории, пытается обратиться к не подписанному URL AWS S3 вместо URL secure-media-uploads.
В качестве обходного решения мне пришлось утомительно посещать каждый объект изображения логотипа категории в AWS S3 и изменять разрешения на «Чтение для всех».
Я подтвердил, что это поведение наблюдается в браузерах Chrome, Firefox и Microsoft Edge. Я пробовал выполнять задачи rake posts:rebake и uploads:secure_upload_analyse_and_update, но они, похоже, никак не влияют на логотипы категорий. Возможно, существует другая задача, которая исправит неправильно указанные URL-адреса изображений логотипов категорий? Или это действительно задумано так, и все объекты загрузок S3 должны быть доступны для чтения всеми, за исключением тех, которые защищены (закрытые посты)?
