@marianord, 감사합니다. 두 번째 단락을 완전히 이해하지 못한 것 같습니다. "사용자를 생성하는 대신"이라고 하셨을 때, 정확히 사용자 라이프사이클의 어떤 단계에서 말씀하시는 건가요? 아마도 단순한 점을 놓치고 있는 것 같은데, 제안하신 내용이 명확하지 않습니다. 좀 더 설명해 주실 수 있을까요?
또한, 익명화(anonymize) 기능을 살펴보겠지만, 몇 가지 질문이 있습니다.
해당 사용자의 게시글 옆에 표시되는 사용자 이름은 어떻게 나타날까요?
제가 해당 사용자에게 같은 이메일 주소 등으로 멤버십 재가입을 설득하는 데 성공한다면, 그 "익명화"가 어떤 식으로 되돌아오는 건가요? 즉, 이전 게시글에 사용자 이름이 다시 표시되나요?
그에 대해 가장 큰 우려는 다이제스트 이메일입니다. 이메일이 발송되는 사용자 대상 기능이기 때문입니다. 다른 옵션으로 다이제스트 설정을 수동으로 변경하여 이메일을 절대 보내지 않도록 하는 방법이 있을 것 같은데, 맞습니까? (다만, 이 역시 수동 작업이며, 궁극적으로는 API를 통해 가능해지기를 바랍니다.)
이 방법이 실현 가능하면, 저는 기술적으로 사용자에 대해 아무 조치도 취할 필요가 없습니다. 사용자는 Discourse에서 유효한 상태로 유지되지만, 이메일은 중단되고(위 참조), 더 이상 로그인할 수 없게 됩니다.
Discourse API를 통해 사용자를 정지(Suspend)하는 것이 이를 자동화하는 좋은 방법일 수 있습니다. 사용자가 정지되면 Discourse에서 로그아웃되고 더 이상 다이제스트 이메일을 받지 않습니다. 사용자가 정지될 때 message가 지정되면, 해당 메시지가 이메일로 사용자에게 전송됩니다. 이를 통해 회원권을 갱신하도록 유도할 수 있습니다.
참고할 점은 정지 기능이 어려운 사용자를 처리하도록 설계된 것이며, 향후 갱신될 수 있는 만료된 회원권 상황을 처리하도록 설계된 것은 아니라는 것입니다. 정지된 사용자에게 전송되는 이메일 템플릿을 맞춤 설정하려면 사이트의 user_notifications.account_suspended.text_body 텍스트를 사용자 지정해야 할 수 있습니다.
사용자의 익명화를 해제하는 쉬운 방법은 없습니다. 제가 아는 유일한 접근 방식은 Rails 콘솔에서 익명 사용자를 새 사용자와 병합하는 것입니다. 사용자를 익명화하면 모든 식별 데이터가 제거되므로, 어떤 계정을 병합해야 할지 파악하기가 어려울 수 있습니다. 사용자가 회원권을 갱신할 가능성이 있다면, 사용자를 정지하는 것이 더 나은 접근 방식일 것입니다.
말씀하신 내용으로 볼 때, 정지(Suspension)가 여기서는 적절한 접근 방식인 것 같습니다. 다만, 발송되는 이메일에 대해 한 가지 질문이 있습니다. 사용자가 취소할 때 CRM 기반 이메일을 발송하고 있어서, Discourse에서는 아무것도 발송하지 않는 것이 좋습니다.
"사용자가 정지될 때 message가 지정되면, 해당 메시지가 이메일로 사용자에게 발송됩니다."라고 언급하셨습니다.
만약 메시지를 제공하지 않는다면, 아무것도 발송되지 않고 템플릿을 업데이트할 필요가 전혀 없는 것인가요(전혀 발송되지 않으므로)?
정지 기능만 보고 있는데, "정지 사유(Suspension Reason)"와 이메일 필드가 어떻게 사용되는지에 대해 조금 명확하지 않습니다.
그렇습니다. 가장 쉬운 테스트 방법은 일회용 이메일 주소를 가진 사용자를 생성한 후, UI를 통해 해당 사용자를 정지하고 정지를 해제해 보는 것입니다.
사용자가 정지되면 suspended_until과 reason이 설정되어야 합니다. 이 필드들은 정지된 사용자가 사이트에 로그인하려고 할 때 표시됩니다. 관리자 / 사용자 정의 / 텍스트 페이지에서 login.suspended_with_reason을 검색하여 이 텍스트를 사용자 지정할 수 있습니다.
hide suspension reasons(정지 사유 숨기기) 사이트 설정을 활성화하지 않는 한, 정지된 사용자의 사용자 카드와 프로필 페이지에 사용자가 정지되었음을 알리는 알림이 표시됩니다. hide suspension reasons 사이트 설정을 활성화하면, 이 알림은 스태프만 볼 수 있습니다.