Contexto: Estou importando um fórum vBulletin para o Discourse.
Gostaria de configurar coisas como CDN, backups remotos, etc., antes de permitir que os usuários existentes acessem o conteúdo do fórum.
Prefiro não colocar o fórum em modo somente leitura, pois seria frustrante para os usuários, após alguns meses, finalmente verem o conteúdo novamente (e atualizado!), mas não poderem interagir. Nesse contexto, se o conteúdo estiver disponível, ele também deve ser interativo.
Então, basicamente, preciso que o Discourse esteja disponível para a equipe, mas exiba uma página de “manutenção” para outros usuários, mesmo que eles possam teoricamente fazer login, e ainda assim permitir que meu site se comunique com serviços como o CDN para que eu possa configurá-los adequadamente.
AFAIK, a maneira mais simples é configurar o site como login obrigatório, ativar aprovar usuários e apontar o SMTP para algo como o MailHog. Não me lembro se o importador aprova os usuários automaticamente; se fizer isso, você pode executar algo como o seguinte no console do Rails:
approved_users = AdminUserIndexQuery.new(query: 'approved', stats: false).find_users_query
approved_users.each do |u|
u.approved = false
u.save!
end
Depois, desative a aprovação quando estiver pronto.
Dessa forma, nenhuma mensagem será enviada publicamente durante a migração, e você poderá visualizar todas as mensagens geradas pelo Discourse caso algo dê errado.
A menos que você opte por migrar as senhas, os usuários terão que redefinir suas credenciais de qualquer forma.
Mas ocultarei os botões de login temporariamente, além de substituir a frase por algo como “Em construção. Fique ligado!”
Os usuários que tentarem fazer login em /login não conseguirão de qualquer forma, já que a importação de senhas não funcionou e os e-mails para não membros da equipe estão desativados, então eles não poderão fazer login com e-mail nem redefinir sua senha.
Acho que essa solução pode atender ao que preciso, certo?