競合するメールアドレス、管理者に問題解決のためのより多くの権限を付与

当社のユーザーが2つのDiscourseアカウントを持っています。1つは使用されていない旧アカウント、もう1つはログインできない新規アカウントです。原因は、CAS SSOプロバイダー上の新規アカウントのメールアドレスが、フォーラム上の旧アカウントと同じメールアドレスに設定されていることです。

テストアカウントで実験し、アカウントを無効化してSSOレコードを削除しようとしましたが、既存のレコードがSSOペイロードと一致しなくなったため、そのアカウントへの新規ログインが阻止されてしまいました。その結果、メールアドレスが競合していると認識されるようになってしまいました。

また、ユーザーの未使用のDiscourseアカウントのメールアドレスを変更し、その新しいメールアドレスで新規アカウントにログインできるようにする実験も行いました。しかし、これにはメール確認が必要です。SMTPサーバーにメールエイリアスを設定して任意のアドレスを傍受できるようにしましたが、リンクに従うとSSO経由でそのユーザーとしてログインする必要があります。その問題点は、ユーザーのアカウントを再有効化し、新しいパスワードを設定し、アカウントをメンバーデータベースにリンクし、SSOプロバイダー上で偽のメンバーシップを作成しなければならないことです。これは確かに可能ですが、ユーザーのアカウント修正のために複雑な手順を踏まなければならないと感じています。

過去にはDBに直接アクセスしてSQLクエリで変更を行ったこともありますが、それはリスクが高く、可能であればそのアプローチは避けたいと考えています。

Discourseの機能を損なわない範囲で、無効化されたアカウントのメールアドレスを「未確認」にするのではなく、削除できる機能があれば大変助かります。

この問題を解決する他の方法があれば、ご教示ください。よろしくお願いいたします。

既存のユーザーを新しいユーザーに統合するのはどうでしょうか?

DiscourseのSSO実装を使用し、SSOペイロード内で require_activation SSOパラメータを true に設定していると思われます。その場合、このトピックで問題の解決方法に関する詳細をご覧ください: https://meta.discourse.org/t/debugging-and-fixing-common-sso-issues/103496。データベースを直接SQLクエリで更新するよりも、そのトピックに記載されているRailsコンソールコマンドを実行する方が安全です。

上記の投稿に記載されている通り、2つのアカウントをマージするのは良いアプローチかもしれませんが、マージ後にSSOレコードをいくつか調整する必要がある場合があります。

検索で見つけたものですが、「ユーザーアカウントの統合」機能も利用可能です。これは、アクティブなユーザーリスト(管理ダッシュボード)でユーザーをクリックし、ページ下部までスクロールして、以下に示す 3 つのボタンを表示することで実行できます。


Discourse 2.5.0.beta3 Release Notes

UI からのユーザー統合

2018 年初頭に、2 つのユーザーアカウントを統合する機能のサポートを追加しました。これを行うにはサーバーへの SSH アクセスが必要で、統合機能は rake タスクとして追加されていました。

現在では、どの管理者でもユーザーを統合できます!ユーザー管理ページにアクセスし、ページ下部の「転送と削除」を選択します。image

統合先のユーザー名を入力し、「転送と削除 @username」をクリックして統合プロセスを開始します。

アドバイスとサポート、ありがとうございます。来週、いくつかのテストアカウントで試してみます。もし大きな問題に遭遇したら、すぐにご連絡します。ありがとうございました :slight_smile:

問題なく解決しました。アカウントを統合した際、Discourse は統合先(削除されなかった)アカウントの SSO 認証情報を保持し、もう一方のアカウントは削除されました。

ご支援いただき、ありがとうございました。:slight_smile: