Verificação de Viabilidade - modificando ou substituindo o recurso de upload de arquivos no composer

Olá a todos.

Estou no processo de implantar o Discourse para uso por uma pequena comunidade de usuários com requisitos de segurança bastante rigorosos. Queremos reforçar a segurança do fórum para que cada categoria possa ser vista apenas por um grupo específico de usuários, o que parece ser possível fazer pelo painel de administração. No entanto, também queremos proteger os uploads de arquivos da mesma forma (URLs geradas aleatoriamente não são seguras o suficiente para nossas necessidades). Não estamos usando S3; se configurarmos nosso próprio servidor de arquivos, provavelmente será algo bem simples: arquivos estáticos em um sistema de arquivos. Cheguei a cogitar a ideia de usar nosso próprio servidor privado para os arquivos enviados, em vez do serviço que vem com o Discourse, mas não queremos que os usuários comprometam inadvertidamente a segurança das imagens. Portanto, gostaríamos de garantir que os usuários da interface web também utilizem esse serviço de hospedagem de arquivos separado.

Acho que isso se resume a duas opções:
(1) Alterar os pontos de extremidade da API usados pelo botão de upload no editor para que apuntem para nosso servidor, ou
(2) Desabilitar o botão de upload e substituí-lo por nosso próprio plugin doppelgänger, que faz o upload para nosso servidor.
Também precisaríamos adicionar parâmetros à chamada da API da web, em particular para incluir uma categoria ou classificação equivalente à imagem.

Minha pergunta é: alguém sabe, de cabeça, se deveríamos ser capazes de fazer isso com a API existente, a API de plugins, etc.? Muito obrigado!

Aqui está um exemplo disso: Discourse Video Upload Plugin with YouTube and Vimeo

Há um campo access_control_post_id no modelo de uploads.

Minha aposta é que, se você deseja permissões granulares para uploads, economizará muito tempo usando o código S3 existente — especialmente se nomes de arquivos obscuros não forem suficientes. Nesse caso, você basicamente precisaria criar um sistema inteiro de permissões para onde for armazenar os arquivos. Ou talvez eu apenas não esteja entendendo.