ユーザーのプライマリグループを設定するためのAPIはありますか?

理想的には、ユーザーを招待する際に、招待するグループをプライマリグループとして設定したいのですが、その方法が見つかりません。API経由でユーザーのプライマリグループを設定する方法はありますか?

よろしくお願いします。

ユーザー設定はupdateUser操作で更新できる可能性があります。

「いいね!」 1

ポインタありがとうございます。それを使ってみました。primary_group_nameprimary_group_id、そしてgroups配列のエントリである['primary_group'] = trueを更新しました。gemを使用してupdate_userを呼び出すと200が返ってきますが、まだうまくいっていません。明日、もう少し詳しく見て、何がうまくいかないのかの手がかりがないか確認します。ただし、明白なものはありませんでした。

サーバーから200コードが返ってきたときに実行したコードは次のとおりです。

client = DiscourseApi::Client.new("https://myforumurl.example.com")
client.api_key = 'これをテストするためのグローバル権限を持つAPIキー'
client.api_username = '管理者ユーザー名 -- これは関係ないと思いますが'
user = client.user('joepowell')
user['primary_group_name'] = 'dojo'
user['primary_group_id'] = 42
# これはgroups配列内のグループ42です
user['groups'][2]['primary_group'] = true
client.update_user('joepowell', user)
「いいね!」 1

Discourse APIのリバースエンジニアリングを参照してください。それがAPIを理解する最も確実な方法であり、常に最新の状態です。

「いいね!」 4

それは素晴らしいです、ありがとうございます :)。明日、それを終えたらここに投稿します :slight_smile:

「いいね!」 2

プライマリグループIDを更新するために、以下のRubyコードを使用できました。Gemではまだサポートされていないようです(コード内でprimary_group_idへの参照を検索しましたが、この方法で機能しそうなものは見つかりませんでした)。

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

gemでサポートされていないパスへのリクエストを行うために、これらのメソッドを使用しても問題ないと思います。

そのため、次のようなことができます。

 response = client.put("admin/users/4/primary_group", primary_group_id: 43)
「いいね!」 1

ああ、いいですね、ありがとうございます。コードを更新した後、プルリクエストを作成するかもしれません。

しかし、今は物事を実行するのに手一杯なので、Discourseのコード自体に変更を加えるまでにはしばらく時間がかかります。Discourseは本当に気に入っています。誰の名前も挙げられない人の推薦でFlarumを少し触ってみましたが、率直に言って比較にはなりません。型破りなことをしたい人にとって、Discourseは別のレベルにあります。

Cheers

「いいね!」 2

APIでプライマリグループを変更することはできませんか?:frowning:

UX で変更できるのであれば、API でも変更できます。 Discourse API のリバースエンジニアリング を参照してください。

ただし、Gem で変更したいということであれば、私にはわかりません。すみません。

「いいね!」 1

ご返信ありがとうございます @pfaffman

リバースでテストしましたが、機能しませんでした。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"
}

そして、
/admin/users/2/primary_group.json: (2 = user barto_95 の ID)

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

ブラウザで /admin/users/2/primary_group.json の URL を見ると、JSON が表示されます。

テスト 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: ご協力ありがとうございます。

そのユーザーは管理者ですか?私の推測では、権限の問題です。以下のいずれか、または複数:ユーザーが間違っている、キーが間違っている、キーの権限が間違っている。

「いいね!」 1

はい、問題はユーザーの権限です。私はこれを使用しました。

ありがとうございます :slight_smile:

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