这个 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组的成员