Comprobación de viabilidad: modificar o reemplazar la función de carga de archivos en el compositor

Hola a todos.

Estoy en proceso de implementar Discourse para una pequeña comunidad de usuarios con requisitos de seguridad bastante estrictos. Queremos reforzar la seguridad del foro para que cada categoría solo pueda ser vista por un grupo específico de usuarios, algo que parece posible desde el panel de administración. Sin embargo, también queremos asegurar las cargas de archivos de la misma manera (las URLs generadas aleatoriamente no son lo suficientemente seguras para nuestras necesidades). No estamos usando S3; si configuramos nuestro propio servidor de archivos, probablemente serán archivos estáticos muy simples en un sistema de archivos. Planteé la idea de usar nuestro propio servidor privado para los archivos subidos en lugar del servicio que viene con Discourse, pero no queremos que los usuarios degraden inadvertidamente la seguridad de las imágenes, por lo que deseamos que los usuarios de la interfaz web también utilicen este servicio de alojamiento de archivos separado.

Creo que esto se reduce a dos opciones:
(1) Cambiar los puntos finales de la API utilizados por el botón de carga en el editor para que apunten a nuestro servidor, o
(2) Deshabilitar el botón de carga y reemplazarlo con nuestro propio plugin clon, que cargue los archivos en nuestro servidor.
También necesitaríamos agregar parámetros a la llamada a la API web, en particular para añadir una categoría o clasificación equivalente a la imagen.

Mi pregunta es si alguien sabe de inmediato si deberíamos poder hacer esto con la API existente, la API de plugins, etc. ¡Muchas gracias!

Aquí tienes un ejemplo de eso: Discourse Video Upload Plugin with YouTube and Vimeo

Hay un campo access_control_post_id en el modelo de archivos subidos.

Mi suposición es que si deseas permisos detallados para los archivos subidos, ahorrarás mucho tiempo utilizando el código S3 que ya existe, especialmente si los nombres de archivo poco comunes no son suficientes. En ese caso, básicamente necesitarías escribir un sistema de permisos completo para donde vayas a almacenar los archivos. O tal vez simplemente no lo entiendo.