هل هناك API لتعيين المجموعة الأساسية لمستخدم

من الناحية المثالية، أود تعيين المجموعة الأساسية عند دعوة مستخدم لتكون المجموعة التي أضيف إليها في الدعوة، لكنني لا أرى طريقة للقيام بذلك. هل هناك أي طريقة عبر واجهة برمجة التطبيقات (API) لتعيين المجموعة الأساسية لمستخدم؟

تحياتي

أعتقد أنه قد يكون بإمكانك تحديث إعدادات المستخدم عبر عملية updateUser:

إعجاب واحد (1)

شكراً على التلميح – لقد حاولت استخدامه – قمت بتحديث primary_group_name، و primary_group_id، وحتى إدخال المصفوفة groups له [‘primary_group’] = true – أحصل على 200 عند استدعاء update_user – باستخدام الجيم، ولكن لم ينجح الأمر بعد. سألقي نظرة فاحصة غداً، لمعرفة ما إذا كان هناك أي مؤشر على ما يحدث بشكل خاطئ. لم أر شيئاً واضحاً رغم ذلك.

هذا هو الكود الذي قمت بتشغيله وحصلت منه على رمز 200 من الخادم:

client = DiscourseApi::Client.new("https://myforumurl.example.com")
client.api_key = 'مفتاح واجهة برمجة تطبيقات بصلاحيات عالمية لاختبار هذا'
client.api_username = 'اسم مستخدم المسؤول الخاص بي -- أعتقد أن هذا لا يهم رغم ذلك'
user = client.user('joepowell')
user['primary_group_name'] = 'dojo'
user['primary_group_id'] = 42
# هذه هي المجموعة 42 في مصفوفة المجموعات
user['groups'][2]['primary_group'] = true
client.update_user('joepowell', user)
إعجاب واحد (1)

انظر الهندسة العكسية لواجهة برمجة تطبيقات Discourse. هذه هي الطريقة الأكثر موثوقية لمعرفة واجهة برمجة التطبيقات وهي دائمًا محدثة.

4 إعجابات

هذا ممتاز شكرا لك :). سأعود للنشر هنا بعد أن أفعل ذلك صباح الغد :slight_smile:

إعجابَين (2)

لذلك تمكنت من استخدام كود روبي التالي لتحديث معرف المجموعة الأساسية. لا يبدو أنه مدعوم بعد عبر الجيم (لقد بحثت في الكود عن إشارات إلى 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)

أعتقد أنه لا بأس في استخدام هذه الطرق لإجراء طلبات إلى مسارات غير مدعومة بواسطة الجيم:

لذا يمكنك القيام بأشياء مثل:

 response = client.put("admin/users/4/primary_group", primary_group_id: 43)
إعجاب واحد (1)

آه، لطيف، شكرًا – اعتقدت أنني قد أقدم طلب سحب (pull request) بعد تحديث الكود هنا:

لكنني منغمس حاليًا في تشغيل الأشياء، لذلك سيستغرق الأمر بضع دقائق قبل أن أتمكن من إجراء تغييرات على كود Discourse نفسه. أنا أحب Discourse حقًا – لقد تعاملت مع Flarum لفترة وجيزة بناءً على توصية شخص لن يُذكر اسمه، وبصراحة لا توجد مقارنة، Discourse في مستوى آخر لأي شخص يريد القيام بأي شيء خارج الصندوق.

تحياتي

إعجابَين (2)

هل من الممكن تغيير المجموعة الأساسية عبر واجهة برمجة التطبيقات؟ :frowning:

إذا كان بإمكانك تغييره باستخدام تجربة المستخدم، فيمكنك تغييره باستخدام واجهة برمجة التطبيقات. راجع الهندسة العكسية لواجهة برمجة تطبيقات Discourse

آه، ولكن إذا كنت تقصد باستخدام Gem، فلا أعرف. آسف

إعجاب واحد (1)

شكرا على الرد @pfaffman

لقد اختبرت بالرجوع ولكن لم ينجح الأمر، تلقيت خطأ 404 غير موجود :frowning:

/admin/users/barto_95/primary_group.json:

{
	"errors": [
		"لم يتم العثور على عنوان URL أو المورد المطلوب."
	],
	"error_type": "not_found"
}

ومع
/admin/users/2/primary_group.json: (2 = معرف المستخدم barto_95)

{
	"errors": [
		"الوصول إلى المورد المطلوب غير مسموح به."
	],
	"error_type": "invalid_access"
}

إذا نظرت في المتصفح باستخدام عنوان URL /admin/users/2/primary_group.json، أرى الـ 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.