コンソールからスタッフのメールアドレスを変更する

:bookmark: このガイドでは、Railsコンソールを使用してコンソールからスタッフメンバーのメールアドレスを変更する方法を説明します。これは、管理者が古いアドレスからの確認なしにメールアドレスを更新する必要がある状況に適用されます。

:person_raising_hand: 必要なユーザーレベル: システム管理者

:warning: コンソールへのアクセスが必要です

Discourseでは、セキュリティ向上のため、スタッフメンバーは新しいメールアドレスと古いメールアドレスの両方からメールアドレスの変更を確認する必要があります。しかし、スタッフメンバーが古いメールアドレスへのアクセスを失い、メールアドレスを更新したい場合に問題が発生します。このガイドでは、古いメールからの確認を必要とせずにコンソール経由でメールアドレスを変更する手順を説明します。

:information_source:これらのコマンドは、ユーザーのメールアドレスの変更を強制し、検証メールをクリックして確認する必要性を回避するためにも使用できます。

コンソールの操作

SSH経由でDropletに接続するか、WindowsでPuttyを使用します。

ssh root@192.168.1.1

192.168.1.1をDropletのIPアドレスに置き換えてください。

Discourseフォルダーに切り替えます。

cd /var/discourse

コンテナーに入る:

./launcher enter app
# または
./launcher ssh app

Railsコンソールにアクセス:

rails c

メールアドレスの変更

これらをユーザーに合わせてパーソナライズするには、ここに情報を入力してください。


                           または

次に、これらのコマンドを(それぞれ別々の行で)実行します。

u = User.find_by_id(=UserID=)

                           または

u = User.find_by_username("=Username=")

u.email = "=EMAIL="

:information_source: ユーザーがバウンスメールの制限に達した場合(つまり、バウンススコアがDiscourseサイトで設定されたしきい値を超えた場合)、u.email_tokens.create(email: u.email)で新しいメールトークンを作成しても効果はなく、先にバウンススコアをリセットする必要があります。

u.email_tokens.create!(email: u.email, scope: EmailToken.scopes[:email_update])
u.save!

これで、メールアドレスが更新され、新しいメールアドレスでログインできるようになるはずです。

「いいね!」 29

これにより、次の非推奨通知が表示されます。

非推奨通知: EmailToken#scope は空にできません。
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/activesupport-8.0.4/lib/active_support/callbacks.rb:406:in `BasicObject#instance_exec’

これを次のように編集しました。

u.email_tokens.create(email: u.email, scope: 'change_email')
「いいね!」 2