ユーザーアカウントの統合

:bookmark: このガイドでは、複数のユーザーアカウントを1つのDiscourseアカウントに統合する方法を説明します。Discourse UI経由でのスタッフ以外のユーザーの統合と、コンソール経由でのスタッフユーザーの統合について取り扱います。

:person_raising_hand: 必要なユーザーレベル: 管理者

Discourseでのユーザーアカウントの統合により、複数のアカウントを1つに結合できます。このプロセスは、以下のシナリオで有用です:

  1. ユーザーが複数のアカウントを作成した場合(以前の登録を忘れてしまった場合など)。
  2. ユーザーが既存のメールアドレスを更新する代わりに、新しいメールアドレスで新しいアカウントを作成した場合。
  3. ユーザーが異なる目的(例:個人、ビジネス、テスト)で使用する複数のアカウントを1つにまとめたい場合。

スタッフ以外のユーザーの統合

管理者は、Discourse UIを直接使用してスタッフ以外のユーザーを統合できます。

:warning: この操作は元に戻せません。統合後、ソースユーザーのアカウントは削除されます。

2つのスタッフ以外のユーザーを統合するには:

  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: 統合進捗画面が長い間変化しない場合、ページを更新してみてください。統合は完了している可能性がありますが見た目が更新されていないだけです。

Q: ユーザー統合を元に戻すことはできますか?
A: いいえ、2人のユーザーが統合されると、その操作は元に戻せません。ソースユーザーのアカウントは統合後に恒久的に削除されます。

Q: ユーザーの統合は、その投稿やトピックに影響を与えますか?
A: ソースユーザーのすべての投稿とトピックはターゲットユーザーに転送されます。これらの項目の作成者は、ターゲットユーザーが作成者であることを示すように変更されます。

「いいね!」 10

投稿が新しいトピックに分割されました:サイトからユーザー結合ボタンが消えた

マージとSSOに関して、他にも厄介な状況が見つかりました。

  1. ユーザーが first.last@organizationA.com というメールアドレスでOrganization AでSSOアカウントを作成します
  2. ユーザーがOrganization Bに移動し、first.last@organizationB.com というメールアドレスでSSOアカウントを作成します
  3. 2つのアカウントをマージします
    1. ユーザーのプライマリメールアドレスは first.last@organizationB.com になります
    2. しかし、マージプロセスにより first.last@organizationA.com がセカンダリメールアドレスとして残ります
  4. ユーザーがOrganization Aに戻り、first.last@organizationA.com でSSO経由でサインインしようとすると、このDiscourseメッセージとともに次のログインループにはまり込みます: Slow down, you’re making too many requests (速度を落としてください、リクエストが多すぎます)

修正するには、手順 #3 でマージされたアカウントのセカンダリメールアドレスから first.last@organizationA.com を削除しました。これにより、別の新しいアカウントが作成され、それを first.last@organizationB.com アカウントとマージしました。

また、マージ後にすぐにアカウントのセカンダリメールアドレスを削除するように、マージプロセスを調整しました。

「いいね!」 1

なぜそうなるのでしょうか?(なぜそれらも単にマージされないのでしょうか?)

アカウントの統合方法について読んでいたのですが、フォーラムでは管理者なのに、「ユーザーを匿名化」ボタンの横に「統合」ボタンが表示されません。 :man_shrugging:

アカウントを統合する際、どちらのアカウントが保持されますか? 正しいアカウントが保持されることをどのように保証していますか? 削除したいアカウントから統合するのでしょうか、それとも残したいアカウントから統合するのでしょうか?

上記の用語を用いると、「source」ユーザーは削除され、その投稿などが「target」ユーザーに引き継がれます。先日初めて実行してみましたが、問題なく動作しました。

「いいね!」 2