メールアドレス変更時の2段階確認が、メールのカスタマイズにより失敗する

こんにちは。この問題の解決策を探しましたが、見つかりませんでした。私は当フォーラムの管理者で、通常は Google 認証でログインしています。メールアドレスを変更したく、設定ページから手続きを開始しました。最初の確認メールが現在のメールアドレスに届き、確認しました。ここまでは問題なく、新しいアドレスにも確認メールが送られるとの表示がありました。2 通目の確認メールが新しいアドレスに届きましたが、その確認リンクをクリックするとブラウザに以下が表示されます。

おっと!そのページは存在しないか、非公開です。

この結果、アカウントには古いメールアドレスがまだ有効なままになっています。

私も似たような経験をしているかもしれません。私はフォーラムの管理者です。メールアドレスを変更し、確認メールを受け取りました。ここまでは問題ありません。フォーラムに戻ると自動的にログインされました。設定を確認したところ、フォーラムからのメールは新しいアドレスに設定されていましたが、ログインに使用するメールアドレスは当初登録したものと同一でした。いくつか確認した結果、管理者アカウントには最初に登録したのと同じアドレスでログインする必要があることが分かりました。完全にログアウトして「新しい」メールアドレスで再ログインしようとすると、あなたと同じエラーメッセージが表示されます。

設定を確認して、フォーラムのメールを受信するアドレスが新しいアドレスに設定されているか確認してください。おそらくそうなっているでしょう。しかし、ログインに使用するアドレスは、管理者アカウントを最初に設定した際に使用したアドレスのままになっている可能性が高いです。

@dax または他のチームメンバーが、これが仕様なのか、それとも管理者のログイン用メールアドレスを別の方法でリセットする必要があるのかを説明できるかもしれません。

土曜日にこれを再現できますか、@tshenry?これは管理者固有の問題です。

Discourse の最新テスト通過バージョンで、管理者メールアドレス変更プロセスをテストしました。通常のログイン認証情報に加え、Google 認証も設定していました。Safari と Chrome の 2 つの異なるブラウザでテストしたところ、すべて期待通りに動作しているようです。

また、約 11 日前のコミットに基づいた Discourse サイトでも試しました。この管理者アカウントは、2 段階認証(2FA)が有効な標準ログインが設定されていました。このコミット以降、プロセスは少し変更されましたが、依然として正常に動作します。

もし、Discourse サイトが完全に最新の状態であるにもかかわらず、引き続きこの問題が発生する場合は、再現手順をステップバイステップで投稿し、関連するブラウザの詳細(バージョン、OS、デフォルトブラウザとインストールされているプラグインなど)も記載してください。当社のホスティングを利用しており、現在この問題が実際に発生している場合は、通常のサポートチャネルまでご連絡ください。直接対応し、原因を特定いたします。

以下を何度か試しました:

  • ダッシュボードで、メールアドレスを新しいものに更新しました。
  • フォーラムソフトウェアから送信されたメールを受け取り、検証用のリンクをクリックしました。
  • ダッシュボードを確認すると、メールアドレスが新しいものに更新されており、これは「請求情報」セクションにも表示されています。
  • 新しいアドレスには、新しいトピックや投稿の通知も届いています。

しかし、「ユーザー設定/アカウント」(ログイン用)では、フォーラムを初めて作成した際に使用した元のメールアドレスが表示されたままです。

  • そこで、そのメールアドレスを新しいものに編集しました。
  • 「変更を保存」をクリックして終了しました。
  • 後で再度確認すると、元のメールアドレスが再び表示されていました。

ログインするたびに、ログインメッセージには「Discourse の設定時に使用したアドレスを使用してください」と表示されます。そのため、セキュリティ上の理由だと思い、報告するのを控えていました。それ以外では、新しいメールアドレスには通知や請求書の領収書など、本来届くべきものが正常に届いています。
(なお、古いメールボックスには現在もアクセス可能です。)

申し訳ありませんが、ホスト型メールについてお話ししているわけではありません。ユーザー(特に管理者)が、他のすべてのユーザーがメールアドレスを変更する際に利用する同じアカウント編集ページを通じて、アカウント内のメールアドレスの変更を開始することについてお話ししています。

私の問題はその点にあります。私は管理者ですが、そのページでは変更できません。ユーザーアカウント設定へ移動し、メールアドレスを変更して保存をクリックすると、「確認メールが送信されました」という通知を受け取り、終了します。その後、リンクをクリックしてログイン画面に移動し、新しいメールアドレスを入力すると、「最初にサインアップした際に使用したアドレスでログインしてください」という通知が表示されます。メールアドレスの変更は保存されず、サインアップ時に使用した元のアドレスに戻ってしまいます。:neutral_face:

一方、フォーラムと同じドメイン名ではなく、私が所有する別のドメイン名のメールアドレスを使用すれば、それは機能するのでしょうか?いずれにせよ、私にとっては問題ありません。現状のままにしておきます。

問題の原因がそれかもしれないと思い、Google 認証を削除しました。再現手順として、私の手順を 94 秒間のスクリーンキャストとして録画しました:

https://drive.google.com/file/d/1eOE2Tptvyk2daWkvDYEFXY3qNKgnImPA/view

@David_Baker1 さん、動画の作成にお時間を割いていただき、ありがとうございます。視聴し、Chrome で慎重に手順を追って実行しました。すべて問題なく動作したため、あなたの環境に特有の要因があると思われます。以下の点をご確認いただけますでしょうか:

  • サイトの /logs セクションに関連しそうなエラーが表示されていませんか?
  • Chrome の拡張機能を実行していませんか?もしそうであれば、別のブラウザで同じ手順を試してみてください。
  • 公式以外の Discourse プラグインをインストールしていませんか?
  • サイト作成時に discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub を参照して手順に従いましたか?

もし将来的に問題となった場合は、お気軽にメールでご連絡ください。直接対応できるか確認いたします。あなたが報告している問題は、今回が初めてです。

Firefox(70.0.1 64 ビット)でも同じ手順を実行しましたが、同じ結果になりました。回答:

  • 11 月 4 日以降、エラーログはありません
  • Firefox で再度試しました
  • 以下のプラグインがインストールされています:discourse-assign、discourse-data-explorer、discourse-plugin-linkedin-auth、discourse-solved、docker_manager
  • インスタンスはこのメタサイトの主要なコントリビューターによってセットアップおよび管理されており、今回の件までは異常な問題は発生していませんでした

ふむ、不思議ですね!設定は非常に標準的なようです。来週、機会があれば、いくつか新しいアイデアを持って再度確認させていただきます。それ以外には、再現できないため、お力になれず申し訳ありません。

こんにちは。さらに調査した結果、原因のヒントとなるものが見つかりました。私のアカウント設定/環境設定では、変更したいメールアドレスが現在のメールアドレスとして表示されています。しかし、その画面の右上にある「管理」ボタンをクリックし、SSO 設定の下までスクロールすると、変更したいメールアドレスが表示されます。これは、Discourse を最初にセットアップした際に使用したアドレスです。その間に新しい仕事に就き、アカウントのメールアドレスを変更しました。しかし、今、それを元に戻したいと考えています。

つまり、現在、私のアカウントには 2 つの異なるメールアドレスが関連付けられているようです。

これがこの問題の潜在的な原因を示しているのでしょうか?

SSOが無効になっているため、SSO関連のことは問題にならないはずです。しかし、それが原因かもしれません。

更新しようとしているメールアドレスが、すでにアカウントの「セカンダリ」メールアドレスとして登録されている可能性があります。その場合、セカンダリメールアドレスを削除してから、プライマリメールアドレスを更新する必要があります。

サイト管理者として、そのメールアドレスがセカンダリメールアドレスであることを確認するには、管理ページに移動し、「セカンダリメールアドレス」行の「表示」ボタンをクリックしてください。

Railsコンソールからセカンダリメールアドレスを削除する方法については、以下の投稿をご覧ください:
https://meta.discourse.org/t/rake-task-for-merging-users/89086/33

これはまさに私の状況と同じです。管理画面では変更したいメールアドレスが表示されているのに、ユーザー環境設定では最初にログインした際の元のアドレスのまま固まってしまいます。また、私のアカウントには 2 つの異なるメールアドレスが関連付けられているようですが…それとも「ユーザー」と「管理」は別々のアカウントとみなされるのでしょうか?

再度確認しましたが、管理ダッシュボードにはセカンダリメールアドレスとして表示されるアカウントはありませんでした。

これが原因でないか確認するためにお尋ねしますが、あなたはサイトの管理者ですか?管理者権限を持つユーザーは、「モデレーターがメールを表示」設定が有効になっていない限り、メールアドレスのフィールドを表示できません。この設定はデフォルトで無効になっています。

はい、私は管理者です。

私も管理者です。もしこれが私にも向けられたものであれば :slight_smile:

サイトへの Rails コンソールへのアクセス権がある場合、更新しようとしているメールアドレスが既に使用されているか、以下のコマンドを実行して確認できます。

UserEmail.where(email: 'youremail@example.com')

サイトに Data Explorer プラグインがインストールされている場合は、コンソールを使用せずに Data Explorer クエリで確認することもできます。

結果が返された場合、それが問題の原因です。ただし、更新しようとしているメールアドレスが Single Sign On レコードに存在すること自体は、問題を引き起こすことはありません。

編集:見つかりました。user_notifications.confirm_new_email.text_body_template が URL を上書きしていました。
残りは無視してください。

こんにちは、Simon。ご支援ありがとうございます。

問題は以下の通りです:

「新しいメールアドレスの確認」メールが、https://forum.xx.org/users/authorize-email/c7ed779eb28c049ec4a5105dd9e07013 のようなリンクで送信されていますが、本来は https://forum.xx.org/u/confirm-new-email/c15d4bc33211e586b70572195f7dac89 であるべきです。

リンクを正しい URL とトークンを使って書き換えると正常に動作しますが、何らかの理由で古いリンク形式が送信され、新しい形式が送られてきません!(24 時間以内に 2 回行いましたが、1 回目は以下の grep と再起動 の後に行いました。)

./launcher rebuild を実行しましたが、まだ古い形式のリンクが送信されています。広告通り、インストールされているのは堅牢な公式プラグインのみです。

その後、コンテナに入り /var/www/discoursegrep -r authorize-email を実行しましたが、該当ファイルは見つかりませんでした。その後、再起動しました。

24 時間以内に 2 回も行き詰まっています。本当に困っています。