我正在使用 Discourse JS 用户对象来检查当前用户“属于”哪些组。
对于某些用户,“User’s JS Object”中的 groups 数组会返回一个对象数组,每个对象都描述了该用户所属的一个组。例如:
groups: Array (5)
0 {
id: 1,
name: "admins",
has_messages: false
}
1 {
id: 46,
name: "custom-group",
has_messages: false
}
2 {
id: 3,
name: "staff",
has_messages: false
}
3 {
id: 10,
name: "trust_level_0",
has_messages: false
}
4 {
id: 11,
name: "trust_level_1",
has_messages: false
}
然而,对于 大多数 用户,groups 数组只是空的 (0)。
我无法弄清楚为什么会这样,因为这些用户 确实 是组成员。
我还检查了这是否与“主组”有关,但是,那些 拥有 groups 数组的用户 也不在 任何主组中,所以这不是问题。
我正在使用 WP SSO 连接来处理用户登录,因此他们会在 WP 实例上登录,而 Discourse 实例基本上是 WP 的“从属”,这意味着 Discourse 从 WP 拉取所有用户数据,并且登录在 WP 中处理。
我确保了“有问题的”用户至少在 WP 中正确登录过一次,并且至少访问过一次 Discourse 以便登录,并且我可以确认用户 被添加到了正确的组中 ——只是在 User JS Object 的 groups 数组中不可见。
有人能帮我找出 为什么会发生这种情况,以及 如何修复它 吗?
我“迫切”需要在该数组中获取用户所属的组 ![]()
顺便说一句,如果这很重要,这就是我获取当前用户 JS 对象的方式——到目前为止效果很好,除非组问题影响 某些 用户(实际上是大多数用户)。
$(document).ready(function() {
$.ajax({
type: 'GET',
cache: false,
url: 'https://discourse.domain.tld/session/current.json',
dataType: 'json',
xhrFields: {
'withCredentials': true
},
success: function(result){
var current_user_groups = result.current_user.groups;
console.log(current_user_groups);// 这对于许多用户来说返回为空。
console.log(result.current_user);// 这里的所有数据都为所有用户正确填充,除非是 GROUPS 数组。
},
error: function(result){
console.log('Error: '+result);
}
});
});
