Come rendere un sito importato inaccessibile agli utenti esistenti, ma solo allo staff e ai servizi come CDN che devono essere configurati?

Contesto: Sto importando un forum vBulletin su Discourse.

Vorrei configurare cose come CDN, backup remoti, ecc., prima di permettere agli utenti esistenti di accedere ai contenuti del forum.
Preferisco non impostare il forum in modalità sola lettura, poiché sarebbe frustrante per gli utenti, dopo alcuni mesi, vedere finalmente di nuovo i contenuti (e aggiornati!) ma non poter interagire. In questo contesto, se i contenuti sono disponibili, dovrebbero essere anche interattivi.

Quindi, di base, avrei bisogno che Discourse fosse accessibile allo staff, ma mostrasse una pagina di “manutenzione” agli altri utenti, anche se teoricamente potrebbero accedere, e allo stesso tempo permettere al mio sito web di comunicare con servizi come il CDN per poterli configurare correttamente.

Qual è il modo più semplice per farlo?

Per quanto ne so, il modo più semplice è impostare il sito su “accesso richiesto”, attivare “è necessario approvare gli utenti” e indirizzare SMTP verso qualcosa come MailHog. Non ricordo se l’importatore approvi automaticamente gli utenti; in tal caso, puoi fare qualcosa di simile nella console di Rails:

approved_users = AdminUserIndexQuery.new(query: 'approved', stats: false).find_users_query

approved_users.each do |u|
  u.approved = false
  u.save!
end

Quindi disattiva l’approvazione quando sei pronto.

In questo modo non invierai alcun messaggio pubblicamente durante la migrazione e potrai visualizzare tutti i messaggi generati da Discourse nel caso in cui qualcosa vada storto.

A meno che tu non scelga di migrare le password, gli utenti dovranno comunque reimpostare le proprie credenziali.

Grazie per la risposta!

Dopo averci pensato un po’, credo che la mia soluzione sarà semplicemente avere questa pagina:

Ma nascondere temporaneamente i pulsanti di accesso, sostituendo anche la frase con qualcosa come “In costruzione. Restate sintonizzati!”

Gli utenti che proveranno ad accedere da /login non potranno farlo comunque, dato che l’importazione delle password non ha funzionato e le email per i non membri dello staff sono disabilitate, quindi non potranno accedere con l’email né reimpostare la password.

Credo che questa soluzione possa fare al caso mio, giusto?

Consiglierei Mailhog o una soluzione simile, così da essere sicuro che Discourse non generi una valanga di email di notifica.

Senza visibilità, rischi semplicemente di aprire le porte inondando di email riattivando il servizio.

Posso vedere le email in sospeso da qualche parte?

Certo, è esattamente quello che fa MailHog. Accetta i messaggi, mostra la coda e ti offre la possibilità di rilasciare le email alle caselle di posta.