Y a-t-il une API pour définir le groupe principal d'un utilisateur

Idéalement, j’aimerais définir le groupe principal lorsque j’invite un utilisateur comme étant le groupe auquel je l’ajoute dans l’invitation, mais je ne vois aucun moyen de le faire. Existe-t-il un moyen via l’API de définir le groupe principal d’un utilisateur ?

Cordialement

Je pense que vous pourriez être en mesure de mettre à jour les paramètres utilisateur via l’opération updateUser :

1 « J'aime »

Merci pour l’indice – j’ai essayé de l’utiliser – j’ai mis à jour le primary_group_name, le primary_group_id, et même l’entrée du tableau groups pour cela [‘primary_group’] = true – j’obtiens un 200 en retour lorsque j’appelle update_user – en utilisant la gem, mais toujours rien. Je vais examiner de plus près demain, voir s’il y a une indication de ce qui ne va pas. Je n’ai rien vu d’évident cependant.

Voici le code que j’ai exécuté et qui m’a renvoyé un code 200 du serveur :

client = DiscourseApi::Client.new("https://myforumurl.example.com")
client.api_key = 'une clé api avec des permissions globales pour tester ceci'
client.api_username = 'mon nom d'utilisateur administrateur -- je pense que cela n'a pas d'importance cependant'
user = client.user('joepowell')
user['primary_group_name'] = 'dojo'
user['primary_group_id'] = 42
# ceci est le groupe 42 dans le tableau groups
user['groups'][2]['primary_group'] = true
client.update_user('joepowell', user)
1 « J'aime »

Voir Ingénierie inverse de l’API Discourse. C’est la façon la plus fiable de comprendre l’API et elle est toujours à jour.

4 « J'aime »

C’est excellent, merci :). Je posterai à nouveau ici après l’avoir fait demain matin :slight_smile:

2 « J'aime »

J’ai pu utiliser le code Ruby suivant pour mettre à jour l’ID du groupe principal. Il ne semble pas encore être pris en charge via le gem (j’ai recherché dans le code des références à primary_group_id, et je n’en ai pas vu qui semblaient fonctionner de cette façon).

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 « J'aime »

Je pense qu’il est acceptable d’utiliser ces méthodes pour faire des requêtes vers des chemins non pris en charge par le gem :

Vous pouvez donc faire des choses comme :

 response = client.put("admin/users/4/primary_group", primary_group_id: 43)
1 « J'aime »

ahh bien, merci – J’ai pensé que je pourrais faire une pull request après avoir mis à jour le code ici :

mais je suis à fond dedans en ce moment pour faire fonctionner les choses, donc il faudra un peu de temps avant que je ne m’attaque à la modification du code de Discourse lui-même. J’adore tellement Discourse – j’ai joué brièvement avec Flarum sur la recommandation de quelqu’un qui ne sera pas nommé, et il n’y a tout simplement pas de comparaison, Discourse est dans une autre ligue pour quiconque veut faire quelque chose en dehors des sentiers battus.

Santé

2 « J'aime »

Il n’est pas possible de changer le groupe principal avec l’API ? :frowning:

Si vous pouvez le modifier avec l’UX, vous pouvez le modifier avec l’API. Voir Ingénierie inverse de l’API Discourse

Oh, mais si vous parlez de la Gem, alors je ne sais pas. Désolé

1 « J'aime »

Merci pour votre réponse @pfaffman

J’ai testé avec l’inverse mais ça ne fonctionne pas, j’ai reçu une erreur 404 not found :frowning:

/admin/users/barto_95/primary_group.json :

{
	"errors": [
		"L'URL ou la ressource demandée n'a pas été retrouvée."
	],
	"error_type": "not_found"
}

Et avec :
/admin/users/2/primary_group.json : (2 = ID de l’utilisateur barto_95)

{
	"errors": [
		"L'accès à la ressource demandée n'est pas autorisé."
	],
	"error_type": "invalid_access"
}

Si je regarde sur le navigateur avec l’URL /admin/users/2/primary_group.json, je vois le JSON

La requête pour tester l’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: Merci pour votre aide

Cet utilisateur est-il un administrateur ? Ma meilleure hypothèse est qu’il s’agit d’un problème de permissions. Un ou plusieurs des éléments suivants : L’utilisateur est incorrect, la clé est incorrecte, les permissions pour la clé sont incorrectes.

1 « J'aime »

Oui, le problème vient du droit de l’utilisateur que j’ai utilisé.

Merci :slight_smile:

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