Verifica di fattibilità: modding o sostituzione della funzionalità di caricamento file nel composer

Ciao a tutti.

Sto procedendo con la distribuzione di Discourse per una piccola comunità di utenti con requisiti di sicurezza molto rigorosi. Vogliamo bloccare la sicurezza del forum in modo che ogni categoria possa essere visualizzata solo da un gruppo specifico di utenti, cosa che sembra realizzabile dal pannello di amministrazione, ma vogliamo anche proteggere i caricamenti di file nello stesso modo (gli URL generati casualmente non sono sufficientemente sicuri per le nostre esigenze). Non stiamo utilizzando S3: se configuriamo questo server di file, sarà probabilmente molto semplice, con file statici salvati direttamente nel filesystem. Ho proposto l’idea di utilizzare un nostro server privato per i file caricati invece del servizio fornito da Discourse, ma non vogliamo che gli utenti compromettano involontariamente la sicurezza delle immagini; pertanto, vogliamo che anche gli utenti dell’interfaccia web utilizzino questo servizio di hosting file separato.

Penso che tutto si riduca a due opzioni:
(1) Modificare gli endpoint API utilizzati dal pulsante di caricamento nell’editor in modo che puntino al nostro server, oppure
(2) Disabilitare il pulsante di caricamento e sostituirlo con un nostro plugin clonato, che carica i file sul nostro server.
Dovremmo anche aggiungere parametri alla chiamata API web, in particolare per associare all’immagine una categoria o una classificazione equivalente.

La mia domanda è: qualcuno sa già, a memoria, se è possibile realizzare tutto questo utilizzando l’API esistente, l’API dei plugin, ecc.? Grazie mille!

Ecco un esempio di ciò: Discourse Video Upload Plugin with YouTube and Vimeo

Nel modello degli upload è presente un campo access_control_post_id.

Credo che, se desideri permessi granulari per gli upload, risparmierai molto tempo utilizzando il codice S3 esistente—specialmente se nomi di file poco chiari non sono sufficienti—dovresti essenzialmente scrivere un intero sistema di permessi per il luogo in cui intendi archiviare i file. O forse semplicemente non ho capito.