Sto usando l’oggetto JS Utente di Discourse per verificare i gruppi di cui l’utente corrente fa parte.
Per alcuni utenti, l’array groups nell’oggetto JS Utente restituisce un array corretto di oggetti, ognuno dei quali descrive un gruppo di cui l’utente fa parte. Esempio:
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
}
Tuttavia, per la maggior parte degli utenti, l’array groups è semplicemente vuoto (0).
Non riesco a capire perché questo accada, dato che quegli utenti sono correttamente membri di gruppi.
Ho anche verificato se fosse correlato al “gruppo primario”, tuttavia, gli utenti che hanno un array groups non sono neanche in alcun gruppo primario, quindi questo non è il problema.
Sto usando una connessione SSO di WP per gestire gli accessi degli utenti, quindi accedono a un’istanza WP e l’istanza Discourse è fondamentalmente una “schiava” di WP, il che significa che Discourse estrae tutti i dati dell’utente da WP e l’accesso viene gestito in WP.
Mi sono assicurato che l’utente “difettoso” abbia effettuato correttamente l’accesso almeno una volta in WP e sia andato almeno una volta su Discourse in modo che sia loggato, e posso confermare che l’utente viene aggiunto ai gruppi giusti - semplicemente non è visibile nell’array groups nell’oggetto JS Utente.
Qualcuno può aiutarmi a capire perché succede e come posso risolverlo?
Ho “disperatamente” bisogno del gruppo di cui l’utente è membro in quell’array ![]()
A proposito, se è importante, ecco come recupero l’oggetto JS Utente corrente - funziona benissimo finora, a meno che il problema dei gruppi che colpisce alcuni utenti (la maggior parte, in realtà).
$(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);// Questo restituisce vuoto per molti utenti.
console.log(result.current_user);// Tutti i dati qui sono correttamente popolati per TUTTI gli utenti, tranne l'array GROUPS.
},
error: function(result){
console.log('Error: '+result);
}
});
});
