Estoy usando el Objeto JS de Usuario de Discourse para verificar los grupos a los que pertenece el usuario actual.
Para algunos usuarios, la matriz groups en el Objeto JS del Usuario devuelve una matriz adecuada de objetos, cada uno describiendo un grupo del que este usuario es miembro. Ejemplo:
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
}
Sin embargo, para la mayoría de los usuarios, la matriz groups está simplemente vacía (0).
No puedo entender por qué podría ser así, ya que esos usuarios sí son miembros de grupos correctamente.
También verifiqué si está relacionado con el “grupo principal”, sin embargo, los usuarios que tienen una matriz groups tampoco están en ningún grupo principal, por lo que este no es el problema.
Estoy usando una Conexión SSO de WP para manejar los inicios de sesión de los usuarios, por lo que inician sesión en una instancia de WP, y la instancia de Discourse es básicamente una “esclava” de WP, lo que significa que Discourse extrae todos los datos del usuario de WP, y el inicio de sesión se maneja en WP.
Me aseguré de que el usuario “defectuoso” haya iniciado sesión correctamente al menos una vez en WP y haya ido a Discourse al menos una vez para que esté conectado, y puedo confirmar que el usuario se agrega a los grupos correctos - simplemente no es visible en la matriz groups en el Objeto JS del Usuario.
¿Alguien puede ayudarme a detectar por qué sucede esto y cómo puedo solucionarlo?
“Necesito desesperadamente” el grupo del que el usuario es miembro en esa matriz ![]()
Por cierto, si es importante, así es como obtengo el Objeto JS del usuario actual: funciona bien hasta ahora, excepto por el problema de los grupos que afecta a algunos usuarios (la mayoría, en realidad).
$(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);// Esto devuelve vacío para muchos usuarios.
console.log(result.current_user);// Todos los datos aquí están correctamente poblados para TODOS los usuarios, a menos que la matriz GROUPS.
},
error: function(result){
console.log('Error: '+result);
}
});
});
