从控制台更改工作人员电子邮件地址

: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 Console:

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 个赞

这会产生以下弃用通知:

DEPRECATION NOTICE: EmailToken#scope cannot be empty.
在 /var/www/discourse/vendor/bundle/ruby/3.4.0/gems/activesupport-8.0.4/lib/active_support/callbacks.rb:406:in BasicObject#instance_exec

我已经编辑了 wiki 将其更新为:

u.email_tokens.create(email: u.email, scope: 'change_email')
2 个赞