Estou usando o Objeto JS do Usuário do Discourse para verificar os grupos do usuário atual em que eles “estão”.
Para alguns usuários, o array groups no Objeto JS do Usuário retorna um array adequado de objetos, cada um descrevendo um grupo do qual este usuário faz parte. Exemplo:
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
}
No entanto, para a maioria dos usuários, o array groups está simplesmente vazio (0).
Não consigo descobrir por que isso aconteceria, já que esses usuários são membros adequados de grupos.
Também verifiquei se está relacionado ao “grupo principal”, no entanto, os usuários que têm um array groups também não estão em nenhum grupo principal, então este não é o problema.
Estou usando uma Conexão SSO do WP para lidar com os logins dos usuários, então eles fazem login em uma Instância WP, e a instância do Discourse basicamente é uma “escrava” do WP, o que significa que o Discourse puxa todos os dados do usuário do WP, e o login é tratado no WP.
Certifiquei-me de que o usuário “defeituoso” fez login adequadamente pelo menos uma vez no WP e foi pelo menos uma vez ao Discourse para que ele esteja logado, e posso confirmar que o usuário é adicionado aos grupos corretos - apenas não está visível no array groups no Objeto JS do Usuário.
Alguém pode me ajudar a identificar por que isso acontece e como posso consertar?
Eu “desesperadamente” preciso do grupo do qual o usuário é membro nesse array ![]()
Aliás, se for importante, é assim que eu busco o objeto JS do usuário atual - funciona bem até agora, exceto pelo problema dos grupos que afeta alguns usuários (a maioria, na verdade).
$(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);// Isso retorna vazio para muitos usuários.
console.log(result.current_user);// Todos os dados aqui são preenchidos adequadamente para TODOS os usuários, exceto o array GROUPS.
},
error: function(result){
console.log('Error: '+result);
}
});
});
