J’utilise l’objet JavaScript Utilisateur de Discourse pour vérifier les groupes dont l’utilisateur actuel fait partie.
Pour certains utilisateurs, le tableau groups dans l’objet JavaScript de l’utilisateur renvoie un tableau d’objets approprié, décrivant chacun un groupe dont cet utilisateur fait partie. Exemple :
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
}
Cependant, pour la plupart des utilisateurs, le tableau groups est simplement vide (0).
Je n’arrive pas à comprendre pourquoi cela se produit, car ces utilisateurs font bien partie de groupes.
J’ai également vérifié si cela était lié au « groupe principal », cependant, les utilisateurs qui ont un tableau groups ne font pas non plus partie d’un groupe principal, donc ce n’est pas le problème.
J’utilise une connexion SSO WP pour gérer les connexions des utilisateurs, donc ils se connectent sur une instance WP, et l’instance Discourse est essentiellement une « esclave » de WP, ce qui signifie que Discourse récupère toutes les données utilisateur de WP, et la connexion est gérée dans WP.
J’ai veillé à ce que l’utilisateur « défectueux » se soit correctement connecté au moins une fois sur WP et soit allé au moins une fois sur Discourse pour qu’il soit connecté, et je peux confirmer que l’utilisateur est ajouté aux bons groupes - il n’est tout simplement pas visible dans le tableau groups de l’objet JavaScript de l’utilisateur.
Quelqu’un peut-il m’aider à identifier pourquoi cela se produit et comment je peux le corriger ?
J’ai « désespérément » besoin du groupe dont l’utilisateur fait partie dans ce tableau ![]()
Au fait, si cela est important, voici comment je récupère l’objet JavaScript de l’utilisateur actuel - cela fonctionne très bien jusqu’à présent, sauf pour le problème des groupes qui affecte certains utilisateurs (la plupart, en fait).
$(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);// Ceci renvoie vide pour de nombreux utilisateurs.
console.log(result.current_user);// Toutes les données ici sont correctement remplies pour TOUS les utilisateurs, sauf le tableau GROUPS.
},
error: function(result){
console.log('Error: '+result);
}
});
});
