RGJ
(Richard - Communiteq)
1
以下是正在发生的情况:
部分用户在每次登录时都会收到 TL2 欢迎通知(“您的信任等级已提升”)。
该问题在以下条件下出现:
- 启用了 SSO 登录,且 Discourse 作为 SSO 客户端
- 在 WP-Discourse 中启用了“同步用户数据”,导致每次用户登录 WordPress 时都会发出
sync_sso 调用
sync_sso 设置了一个具有 grant_trust_level 的群组,且该信任等级低于用户当前的信任等级
这会导致用户的信任等级被从头重新计算,并且每次登录时都会发送欢迎消息。
6 个赞
nat
(Natalie T)
9
你好,
感谢分享此 bug!我尝试在本地重现此 bug,但未能成功,我的设置如下:
(Wordpress)
- 设置 Wordpress 用户“Steaky”,邮箱为 steaky@cat.com
- 添加
wpdc_custom_sso_params 以将 cats 组设置为所有使用 $params['groups'] = 'cats'; 登录的用户
(Discourse)
- 创建用户“Steaky”,邮箱为 steaky@cat.com
- 将 Steaky 设置为
trust_level_3(非锁定)
- 创建组“cats”,并将“自动授予成员的信任级别”设置为“cats”的 2
Wordpress 和 Discourse 已连接
并且
同步了用户数据。
(Discourse)
- 登录 Steaky,重定向到 Wordpress 并登录,然后重定向回 Discourse
- (确认“cats”已设置为 Steaky)
- Steaky 未看到欢迎消息
^ 使用 SiteSetting.discourse_connect_overrides_groups 重复以上步骤,结果相同。
我怀疑你的设置可能更复杂。如果你能分享更多关于受影响用户设置的详细信息,那就太好了:
- 你还启用了哪些其他“Discourse Connect”站点设置?
- 受影响的用户是否单独加入了可能授予他们某些信任级别的组?
- 受影响用户的信任级别是否被锁定?他们属于哪种类型的组?
- 任何其他有用的信息
谢谢!
4 个赞
RGJ
(Richard - Communiteq)
10
这个 bug 已经存在一年多了,在此期间客户已经不再使用 Discourse,因此我无法完全复现。不过,我总是会做详细的笔记,所以我甚至还保留了当时的 SSO payload 记录。但我无法检查任何其他设置和/或在该确切实例上进行复现。
回到我的笔记。发生的情况与你现在做的略有不同。SSO 传递了一个空的 groups 字段(仅仅是 groups=)。但相关的用户属于一个 SSO 提供商未知的另一个组,该组强制其成员提升到 TL2。
此外,据我回忆,TL2 和 TL3 的欢迎消息行为不同,所以如果你尝试复现此问题,可能需要使用 TL2 而不是 TL3。
因此,要复现,我认为你需要执行以下操作:(请注意,我引入了第二个组)
(WordPress)
- 使用电子邮件 steaky@cat.com 设置 WordPress 用户“Steaky”
- 添加
wpdc_custom_sso_params 以设置所有登录用户的 dogs 组,并设置 $params['groups'] = 'dogs';
(Discourse)
- 使用电子邮件 steaky@cat.com 创建用户“Steaky”
- 让 Steaky 合法地成为
trust_level_1(非锁定)
- 创建“cats”和“dogs”组,并将“自动授予成员的信任级别”设置为“cats”的 2 级
- 让 Steaky 成为
cats 组的成员
2 个赞
nat
(Natalie T)
12
我上次回复后就暂停了对那个 bug 的探索,但我已经阅读了你的笔记,并且非常感激!你能有如此详尽的记录真是太不可思议了。它仍然在我待办的列表上,我很快就会重新开始处理它,所以感谢你的跟进。
3 个赞