如何使导入的网站对现有用户不可访问,但仅对需要配置的员工和服务(如CDN)可访问?

上下文:我正在将 vBulletin 论坛迁移到 Discourse。

我希望在允许现有用户访问论坛内容之前,先配置 CDN、远程备份等设置。

我不希望将论坛设置为只读模式,因为那样会让用户感到沮丧:他们经过几个月的等待终于能看到内容(而且是更新后的内容),却无法进行互动。在这种情况下,如果内容可用,那么它也应该可供互动。

因此,我基本上需要 Discourse 对工作人员开放,但对其他用户显示“维护”页面,即使他们理论上可以登录。同时,我还需要我的网站能够与 CDN 等服务通信,以便正确配置它们。

实现这一目标最简单的方法是什么?

据我所知,最简单的方法是设置网站为“需要登录”,开启“必须审核用户”,并将 SMTP 指向类似 MailHog 的服务。我不确定导入器是否会自动审核用户,如果是的话,你可以在 Rails 控制台中执行以下操作:

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

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

然后在一切就绪后关闭审核功能。

这样在迁移过程中就不会向公众发送任何消息,并且可以查看 Discourse 生成的所有消息,以防出现问题。

除非你选择迁移密码,否则用户无论如何都需要重置凭据。

感谢您的回复!

经过一番考虑,我打算这样做:保留这个页面:

但暂时隐藏登录按钮,并将那句话替换为类似“建设中,敬请期待!”的内容。

试图从 /login 登录的用户本来也无法成功,因为密码导入未生效,且非管理员的邮箱功能已禁用,所以他们既无法通过邮箱登录,也无法重置密码。

我想这个方案应该能达到我的目的,对吧?

我建议使用 Mailhog 或类似解决方案,这样你就能确保 Discourse 不会生成大量通知邮件。

如果没有可见性,重新启用邮件功能可能会让邮件洪流一发不可收拾。

我在哪里可以查看待处理的邮件?

没问题,这正是 Mailhog 的功能。它接收邮件,展示队列,并允许您将邮件释放到邮箱中。