기존 사용자에게는 접근을 막고, 설정이 필요한 스태프와 CDN 서비스만 접근할 수 있도록 가져온 사이트를 설정하는 방법

배경: vBulletin 포럼을 Discourse로 가져오고 있습니다.

기존 사용자가 포럼 콘텐츠에 접근하기 전에 CDN, 원격 백업 등을 설정하고 싶습니다.
포럼을 읽기 전용 모드로 설정하는 것은 피하고 싶습니다. 몇 달 만에 마침내 콘텐츠(그리고 업데이트된 내용!)를 다시 볼 수 있게 되었지만 상호작용을 할 수 없다면 사용자에게 매우 답답할 것이기 때문입니다. 이 맥락에서 콘텐츠가 이용 가능하면 상호작용도 가능해야 합니다.

즉, 기본적으로 Discourse는 스태프에게는 이용 가능하게 하되, 다른 사용자에게는 이론적으로 로그인할 수 있더라도 “유지보수” 페이지를 표시해야 합니다. 또한 제 웹사이트가 CDN과 같은 서비스와 통신할 수 있도록 하여 이를 적절히 설정할 수 있어야 합니다.

이를 위한 가장 간단한 방법은 무엇인가요?

제가 아는 한, 가장 간단한 방법은 사이트를 로그인 필수로 설정하고 사용자 승인 필수를 활성화한 뒤, SMTP를 mailhog 같은 도구로 설정하는 것입니다. 가져오기(importer)가 사용자를 자동으로 승인하는지는 기억이 나지 않습니다. 자동으로 승인한다면, 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가 바로 그런 역할을 합니다. 메시지를 수신하고 큐를 표시하며, 이메일을 메일박스에 전달할 수 있는 옵션을 제공합니다.