Gibt es eine API, um die primäre Gruppe für einen Benutzer festzulegen

Idealerweise möchte ich die primäre Gruppe festlegen, wenn ich einen Benutzer einlade, die Gruppe zu sein, der ich ihn bei der Einladung hinzufüge, aber ich sehe keine Möglichkeit, dies zu tun. Gibt es eine Möglichkeit über die API, die primäre Gruppe für einen Benutzer festzulegen?

Viele Grüße

Ich glaube, Sie können die Benutzereinstellungen über den Vorgang updateUser aktualisieren:

1 „Gefällt mir“

Vielen Dank für den Hinweis – ich habe versucht, ihn zu verwenden – ich habe primary_group_name, primary_group_id und sogar den Eintrag im groups-Array dafür [‘primary_group’] = true aktualisiert – ich bekomme ein 200 zurück, wenn ich update_user aufrufe – mit dem Gem, aber bisher ohne Erfolg. Ich werde es morgen genauer betrachten, um zu sehen, ob es Hinweise darauf gibt, was schief läuft. Ich habe jedoch nichts Offensichtliches gesehen.

Dies ist der Code, den ich ausgeführt habe und von dem Server einen 200-Code zurückbekommen habe:

client = DiscourseApi::Client.new("https://myforumurl.example.com")
client.api_key = 'ein API-Schlüssel mit globalen Berechtigungen zum Testen dieses'
client.api_username = 'mein Admin-Benutzername – ich glaube, das spielt hier keine Rolle'
user = client.user('joepowell')
user['primary_group_name'] = 'dojo'
user['primary_group_id'] = 42
# dies ist Gruppe 42 im groups-Array
user['groups'][2]['primary_group'] = true
client.update_user('joepowell', user)
1 „Gefällt mir“

Siehe Reverse-Engineering der Discourse-API. Das ist der zuverlässigste Weg, um die API herauszufinden, und sie ist immer auf dem neuesten Stand.

4 „Gefällt mir“

Das ist ausgezeichnet, danke :). Ich werde mich morgen früh hier wieder melden :slight_smile:

2 „Gefällt mir“

Ich konnte den folgenden Ruby-Code verwenden, um die primäre Gruppen-ID zu aktualisieren. Es scheint, dass dies über das Gem noch nicht unterstützt wird (ich habe den Code nach Verweisen auf primary_group_id durchsucht und keine gefunden, die auf diese Weise funktionieren würden).

require 'curb'
http = Curl.put('https://yourforum.com/admin/users/###user_id###/primary_group?primary_group_id=###group_id###') do | http |
  http.headers['Api-Key'] = 'your-api-key';
  http.headers['Api-Username'] = 'your-api-username';
  http.headers['Content-Type'] = 'application/x-www-form-urlencoded'
end

1 „Gefällt mir“

Ich denke, es ist in Ordnung, diese Methoden zu verwenden, um Anfragen an Pfade zu stellen, die vom Gem nicht unterstützt werden:

Sie können also Dinge tun wie:

 response = client.put("admin/users/4/primary_group", primary_group_id: 43)
1 „Gefällt mir“

ahh nett, danke – ich dachte, ich könnte nach dem Aktualisieren des Codes hier einen Pull Request machen:

aber ich bin gerade tief drin, um die Dinge zum Laufen zu bringen, daher wird es noch eine Weile dauern, bis ich Änderungen am Discourse-Code selbst vornehme. Ich liebe Discourse aber sehr – habe mich auf Empfehlung einer nicht zu nennenden Person kurz mit Flarum beschäftigt, und es gibt ehrlich gesagt keinen Vergleich, Discourse ist in einer anderen Liga für jeden, der etwas Außergewöhnliches tun möchte.

Prost

2 „Gefällt mir“

Es ist nicht möglich, die primäre Gruppe per API zu ändern? :frowning:

Wenn Sie es mit der UX ändern können, können Sie es auch mit der API ändern. Siehe Reverse-Engineering der Discourse-API

Oh, aber wenn Sie die Gem meinen, dann weiß ich es nicht. Entschuldigung.

1 „Gefällt mir“

Danke für die Antwort @pfaffman

Ich habe es mit Reverse getestet, aber es funktioniert nicht. Ich erhalte 404 Not Found :frowning:

/admin/users/barto_95/primary_group.json:

{
	"errors": [
		"Die angeforderte URL oder Ressource wurde nicht gefunden."
	],
	"error_type": "not_found"
}

und mit
/admin/users/2/primary_group.json: (2 = ID des Benutzers barto_95)

{
	"errors": [
		"Der Zugriff auf die angeforderte Ressource ist nicht gestattet."
	],
	"error_type": "invalid_access"
}

Wenn ich im Browser mit der URL /admin/users/2/primary_group.json nachsehe, sehe ich das JSON

Die Anfrage zum Testen der API:


curl --request PUT \
  --url 'https://xxxxxr/admin/users/2/primary_group.json?=' \
  --header 'Api-Key: a7bb1199xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdecbc7b41658' \
  --header 'Apu-Username: Equipe_HACF' \
  --header 'Content-Type: application/json' \
  --data '{
	"primary_group_id": "67"
}'

:frowning: Danke für deine Hilfe

Ist dieser Benutzer ein Administrator? Meine Vermutung ist, dass es sich um ein Berechtigungsproblem handelt. Eines oder mehrere der folgenden Probleme: Der Benutzer ist falsch, der Schlüssel ist falsch, die Berechtigungen für den Schlüssel sind falsch.

1 „Gefällt mir“

Ja, das Problem ist das Recht des Benutzers, das ich verwendet habe.

Danke :slight_smile:

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.