Ich verwende das Discourse JS User Object, um die Gruppen des aktuellen Benutzers zu überprüfen, denen er “angehört”.
Bei einigen Benutzern gibt das groups-Array im User JS Object ein korrektes Array von Objekten zurück, die jeweils eine Gruppe beschreiben, der dieser Benutzer angehört. Beispiel:
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
}
Bei den meisten Benutzern ist das groups-Array jedoch einfach leer (0).
Ich kann nicht herausfinden, warum das so ist, da diese Benutzer korrekt Mitglied von Gruppen sind.
Ich habe auch geprüft, ob es mit der “primären Gruppe” zusammenhängt. Die Benutzer, die ein groups-Array haben, sind jedoch auch nicht in einer primären Gruppe, also ist das nicht das Problem.
Ich verwende eine WP SSO Connection, um die Benutzeranmeldungen zu verwalten. Sie melden sich also auf einer WP-Instanz an, und die Discourse-Instanz ist im Grunde eine “Slave”-Instanz von WP, d.h. Discourse zieht alle Benutzerdaten aus WP und die Anmeldung wird in WP gehandhabt.
Ich habe sichergestellt, dass sich der “fehlerhafte” Benutzer mindestens einmal korrekt in WP angemeldet hat und mindestens einmal zu Discourse gegangen ist, damit er angemeldet ist, und ich kann bestätigen, dass der Benutzer den richtigen Gruppen hinzugefügt wird - es ist nur nicht im groups-Array im User JS Object sichtbar.
Kann mir jemand helfen, warum das passiert und wie ich es beheben kann?
Ich brauche die Gruppe, der der Benutzer angehört, dringend in diesem Array ![]()
Übrigens, falls es wichtig ist, hier ist, wie ich das aktuelle User JS Object abrufe - funktioniert bisher gut, es sei denn, das Gruppenproblem betrifft einige Benutzer (die meisten, tatsächlich).
$(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);// Dies gibt für viele Benutzer leer zurück.
console.log(result.current_user);// Alle Daten hier sind für ALLE Benutzer korrekt ausgefüllt, außer dem GROUPS-Array.
},
error: function(result){
console.log('Error: '+result);
}
});
});
