Comment rendre un site importé inaccessible aux utilisateurs existants, mais uniquement au personnel et aux services comme le CDN qui doivent être configurés ?

Contexte : J’importe un forum vBulletin vers Discourse.

Je souhaite configurer des éléments tels que le CDN, les sauvegardes distantes, etc., avant de permettre aux utilisateurs existants d’accéder au contenu du forum.
Je préférerais ne pas mettre le forum en mode lecture seule, car il serait frustrant pour les utilisateurs de, après plusieurs mois, enfin revoir le contenu (et mis à jour !) sans pouvoir interagir. Dans ce contexte, si le contenu est accessible, il doit également être interactif.

Donc, j’ai essentiellement besoin que Discourse soit accessible au personnel, mais qu’il affiche une page de « maintenance » pour les autres utilisateurs, même s’ils sont théoriquement capables de se connecter, tout en permettant à mon site web de communiquer avec des services comme le CDN afin que je puisse les configurer correctement.

Quelle est la méthode la plus simple pour y parvenir ?

À ma connaissance, la méthode la plus simple consiste à rendre le site « connexion requise », activer l’option « approuver les utilisateurs » et configurer SMTP pour pointer vers quelque chose comme MailHog. Je ne me souviens plus si l’outil d’importation approuve automatiquement les utilisateurs ; dans ce cas, vous pouvez exécuter quelque chose comme ceci dans la console Rails :

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

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

Ensuite, désactivez l’approbation une fois que tout est prêt.

De cette façon, aucun message ne sera envoyé publiquement pendant la migration, et vous pourrez consulter tous les messages générés par Discourse au cas où quelque chose tournerait mal.

Sauf si vous choisissez de migrer les mots de passe, les utilisateurs devront de toute façon réinitialiser leurs identifiants.

Merci pour votre réponse !

Après y avoir réfléchi un moment, je pense que je vais simplement garder cette page :

Mais je vais masquer temporairement les boutons de connexion, et remplacer la phrase par quelque chose comme « En construction. Restez à l’écoute ! »

Les utilisateurs qui essaieront de se connecter via /login ne pourront pas de toute façon, puisque l’importation des mots de passe n’a pas fonctionné et que les e-mails pour les non-personnels sont désactivés. Ils ne pourront donc ni se connecter par e-mail, ni réinitialiser leur mot de passe.

Je suppose que cette solution répondra à mes besoins, n’est-ce pas ?

Je recommande Mailhog ou une solution similaire, simplement pour être certain que Discourse ne génère pas des tonnes d’e-mails de notification.

Sans visibilité, vous risquez simplement d’ouvrir la boîte de Pandore en réactivant les e-mails.

Puis-je consulter les e-mails en attente quelque part ?

Bien sûr, c’est exactement ce que fait MailHog. Il accepte les messages, affiche la file d’attente et vous permet de libérer les e-mails vers les boîtes aux lettres.