理想的には、ユーザーを招待する際に、招待するグループをプライマリグループとして設定したいのですが、その方法が見つかりません。API経由でユーザーのプライマリグループを設定する方法はありますか?
よろしくお願いします。
理想的には、ユーザーを招待する際に、招待するグループをプライマリグループとして設定したいのですが、その方法が見つかりません。API経由でユーザーのプライマリグループを設定する方法はありますか?
よろしくお願いします。
ユーザー設定はupdateUser操作で更新できる可能性があります。
ポインタありがとうございます。それを使ってみました。primary_group_name、primary_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)
Discourse APIのリバースエンジニアリングを参照してください。それがAPIを理解する最も確実な方法であり、常に最新の状態です。
それは素晴らしいです、ありがとうございます :)。明日、それを終えたらここに投稿します ![]()
プライマリグループ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
gemでサポートされていないパスへのリクエストを行うために、これらのメソッドを使用しても問題ないと思います。
そのため、次のようなことができます。
response = client.put("admin/users/4/primary_group", primary_group_id: 43)
ああ、いいですね、ありがとうございます。コードを更新した後、プルリクエストを作成するかもしれません。
しかし、今は物事を実行するのに手一杯なので、Discourseのコード自体に変更を加えるまでにはしばらく時間がかかります。Discourseは本当に気に入っています。誰の名前も挙げられない人の推薦でFlarumを少し触ってみましたが、率直に言って比較にはなりません。型破りなことをしたい人にとって、Discourseは別のレベルにあります。
Cheers
APIでプライマリグループを変更することはできませんか?![]()
UX で変更できるのであれば、API でも変更できます。 Discourse API のリバースエンジニアリング を参照してください。
ただし、Gem で変更したいということであれば、私にはわかりません。すみません。
ご返信ありがとうございます @pfaffman
リバースでテストしましたが、機能しませんでした。404 Not Found が表示されます ![]()
/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"
}'
ご協力ありがとうございます。
そのユーザーは管理者ですか?私の推測では、権限の問題です。以下のいずれか、または複数:ユーザーが間違っている、キーが間違っている、キーの権限が間違っている。
はい、問題はユーザーの権限です。私はこれを使用しました。
ありがとうございます ![]()
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.