“必须批准用户”通知被旧用户错误触发

在过去的几周里,一些有问题的(被禁止的)用户一直在创建带有冒犯性/不当用户名的账户。为了防止这种情况发生,我开启了 “Staff must approve all new user accounts before they are allowed to access the site.”(员工必须批准所有新用户账户才能访问网站)的设置,它确实要求批准所有账户。

然而,非常烦人的是,每隔几个小时,我都会收到关于旧用户“等待批准的用户”的通知,这些用户是在几个月甚至几年前就加入的,远早于此设置被激活之前。

点击通知,我看到:

There are new user signups waiting to be approved (or rejected) before they can access this forum. Please review them.(有新用户注册等待批准(或拒绝)后才能访问此论坛。请审核它们。)

……但点击“Please review them”(请审核它们)显示并没有:

There are no items to review.(没有项目可供审核。)

admin/users/list/new 列表中向下搜索,我看到一些用户确实被列为“未批准”。我找不到这些“未批准”用户之间的任何共同点,除了所有用户都是在该设置切换之前创建的。其中一些用户“primary email: Not verified”(主邮箱:未验证),而另一些则已验证。

我尝试手动批准每一个,但我需要滚动回几百“页”,而且我找不到一种简单的方法按“未批准”进行过滤。

有没有一种快速的方法将所有现有用户标记为“已批准”?或者至少阻止发送关于这些旧用户的通知?

2 个赞

你还在遭受这个的困扰吗?

最后,我下定决心,手动滚动了整个用户列表(逐一查找“已批准:否”的用户),然后进入每个用户的个人资料并单独批准了他们 :sweat:

2 个赞

我注意到了同样的现象,我认为我找到了原因(不是为什么那些用户没有出现在审核队列中,而是为什么他们根本没有被批准):

据我理解的代码[1],当你启用“must_approve_users”时,大多数在设置启用之前创建的用户都应该被批准:

这对我大多数用户来说是有效的,但有些用户没有被标记为已批准。

Data Explorer Query
SELECT
  id as UserID, approved
FROM
  users
ORDER BY id
UserID Approved
1 true
3 true
8 true
10 false
11 false
12 false
13 true

当你查看 reviewables 表时,你会注意到用户 ID 与聊天消息的目标 ID 匹配的用户没有被批准。

Data Explorer Query
SELECT id, target_id, target_type
FROM reviewables
ORDER BY target_id
id target_id target_type
6 9 ChatMessage
7 10 ChatMessage
8 11 ChatMessage
9 12 ChatMessage
1 2901 Post
2 2909 Post
5 2991 Post

我认为当存在一个目标 ID 与“user”以外的 target_type 匹配时,用户未被批准是一个 bug。


  1. 我几乎没有任何编程技能 ↩︎

3 个赞