사용자 계정 병합

:bookmark: 이 가이드는 여러 사용자 계정을 단일 Discourse 계정으로 병합하는 방법을 설명합니다. Discourse UI를 통해 일반(비스태프) 사용자를 병합하는 방법과 콘솔을 통해 스태프 사용자를 병합하는 방법을 다룹니다.

:person_raising_hand: 필요한 사용자 권한: 관리자

Discourse에서 사용자 계정을 병합하면 여러 계정을 하나의 계정으로 통합할 수 있습니다. 이 과정은 다음과 같은 여러 시나리오에서 유용할 수 있습니다:

  1. 사용자가 이전 가입을 잊고 여러 계정을 생성한 경우.
  2. 사용자가 기존 이메일 주소를 업데이트하는 대신 새 이메일 주소로 새 계정을 생성한 경우.
  3. 사용자가 다양한 목적(예: 개인, 업무, 테스트 등)으로 사용하던 여러 계정을 단일 계정으로 통합하려는 경우.

비스태프 사용자 병합

관리자는 Discourse UI를 통해 비스태프 사용자를 직접 병합할 수 있습니다.

:warning: 이 작업은 되돌릴 수 없습니다. 병합 후 소스 사용자 계정은 삭제됩니다.

두 비스태프 사용자를 병합하려면:

  1. 소스 사용자(병합할 원본 계정)의 사용자 관리 페이지로 이동합니다.
  2. 페이지 하단으로 스크롤합니다.
  3. “병합(Merge)” 버튼을 클릭합니다.
  4. 첫 번째 팝업 창에서 대상 계정(병합할 목표 계정)의 사용자 이름을 입력하고 "전달 및 삭제(Transfer & Delete)"를 클릭합니다.
  5. 확인 대화 상자가 나타납니다. 표시된 확인 텍스트(예: transfer @source to @target)를 입력하고 병합을 시작하려면 "전달 및 삭제(Transfer & Delete)"를 클릭합니다.

:information_source: 대규모 계정의 병합은 리소스를 많이 사용하며, 소스 사용자와 연관된 데이터 양에 따라 처리에 시간이 걸릴 수 있습니다.

병합되는 내용은 무엇인가요?

사용자 계정을 병합할 때, Discourse는 다음을 포함하여 50개 이상의 테이블 데이터를 결합합니다:

  • 게시글 및 토픽
  • 주고받은 좋아요
  • 개인 메시지
  • 사용자 프로필 정보
  • 사용자 설정 및 환경 설정
  • 사용자 활동 및 활동 기록(예: 북마크, 토픽 조회)
  • 배지 및 업적
  • 신뢰 수준 및 그룹 소속
  • 연결된 계정(예: 소셜 로그인)

충돌이 발생하는 경우, 대상 사용자의 세부 정보가 유지됩니다. 두 사용자 모두 계정에 익명 사용자가 연결되어 있는 경우, 소스 사용자가 소유한 익명 사용자는 손실됩니다.

:warning: 소스 사용자를 참조하는 수신 링크(예: https://discourse.example.com/t/some-topic/17/3?u=source_username)는 병합 후 대상 사용자와 연관되지 않습니다.

사용자 병합 및 DiscourseConnect에 대한 중요 참고 사항

사용자 계정 병합은 구현 방식에 따라 DiscourseConnect(구 SSO)에 영향을 줄 수 있습니다:

  • DiscourseConnect가 이메일 주소 기반으로 운영되는 경우, DiscourseConnect 시스템에서 대상 계정의 이메일이 사용된다면 문제가 발생하지 않아야 합니다. 병합 후 소스 사용자의 이메일은 대상 계정의 보조 이메일이 되며, 이후 해당 이메일이 DiscourseConnect에 사용될 경우 로그인 문제가 발생할 수 있습니다. 필요시 병합 후 보조 이메일을 제거하는 것을 고려하십시오.
  • DiscourseConnect 시스템이 Discourse 사용자 ID와 다른 고유 사용자 ID를 사용하는 경우, 소스 계정의 고유 ID가 대상 계정으로 올바르게 매핑되지 않으면 문제가 발생할 수 있습니다.

스태프 사용자 병합

보안상의 이유로, 스태프 사용자 병합은 콘솔을 통해 수행해야 합니다.

:information_source: 사이트가 Discourse에 호스팅된 경우, 스태프 사용자 병합에 대한 도움을 받으려면 team@discourse.org로 문의하십시오.

콘솔을 통해 스태프 사용자를 병합하려면:

root@host:/var/discourse# ./launcher enter app
root@host-app:/var/www/discourse# rake users:merge['source_username','target_username']

Users merged!

root@host-app:/var/www/discourse#

:warning: 명령어의 쉼표 앞뒤에 공백이 없도록 하십시오.

자주 묻는 질문(FAQ)

Q: 병합 과정이 멈춘 것 같으면 어떻게 되나요?
A: 병합 진행 화면이 장시간 변화가 없다면 페이지를 새로고침해 보십시오. 병합은 완료되었지만 UI가 업데이트되지 않은 것일 수 있습니다.

Q: 사용자 병합을 되돌릴 수 있나요?
A: 아니요, 두 사용자가 병합되면 이 작업을 되돌릴 수 없습니다. 소스 사용자 계정은 병합 후 영구적으로 삭제됩니다.

Q: 사용자 병합이 게시글 및 토픽에 영향을 미치나요?
A: 소스 사용자의 모든 게시글과 토픽은 대상 사용자로 이전됩니다. 이 항목들의 작성자는 생성자로 대상 사용자를 반영하도록 변경됩니다.

10개의 좋아요

A post was split to a new topic: Merge user button disappeared on my site

계정 병합과 SSO 관련 또 다른 까다로운 상황을 발견했습니다.

  1. 사용자가 A 조직에서 first.last@organizationA.com 이메일 주소를 사용하여 SSO 계정을 생성합니다.
  2. 사용자가 B 조직으로 이동하여 first.last@organizationB.com 이메일 주소를 사용하여 SSO 계정을 생성합니다.
  3. 두 계정을 병합합니다.
    1. 사용자의 기본 이메일 주소는 이제 first.last@organizationB.com이 됩니다.
    2. 그러나 병합 과정에서 first.last@organizationA.com은 부(secondary) 이메일 주소로 남아 있게 됩니다.
  4. 사용자가 다시 A 조직으로 돌아가 first.last@organizationA.com으로 SSO 로그인을 시도하면, 다음과 같은 로그인 루프에 갇히게 됩니다: Slow down, you’re making too many requests

이를 해결하기 위해 3단계에서 병합된 계정의 부(secondary) 이메일 주소에서 first.last@organizationA.com을 제거했습니다. 이로 인해 새로운 계정이 생성되었고, 우리는 이 계정을 first.last@organizationB.com 계정으로 병합했습니다.

또한, 병합 후 계정의 부(secondary) 이메일 주소를 즉시 제거하도록 병합 프로세스를 조정했습니다.

1개의 좋아요

왜 그런 것인가요? (왜 이것도 단순히 병합되지 않는 건가요?)

여기서 계정 병합 방법을 읽어 봤는데, 포럼에서 해당 병합 버튼이 ‘사용자 익명화’ 버튼 옆에 안 보여요. :man_shrugging:

계정을 병합할 때 어떤 계정이 유지되는지, 올바른 계정이 유지되도록 어떻게 보장하는지, 유지하고 싶은 계정에서 병합을 시작해야 하는지 아니면 삭제하고 싶은 계정에서 시작해야 하는지 궁금합니다.

위에서 언급한 용어를 사용하자면, “소스” 사용자는 삭제되고, 해당 사용자의 게시글 등이 “타깃” 사용자로 이전됩니다. 며칠 전에 처음 시도해 보았는데 정상적으로 작동했습니다.

1개의 좋아요