فعاليات خاصة داخل المجموعة

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

https://example.discourse.org/discourse-post-event/events.ics?user_api_key=[xxxxx]

فسيتم عرض جميع الأحداث.

يجب أن تكون هناك خيار لإنشاء أحداث “داخلية” تُعرض فقط ضمن مجموعة مستخدمين. يجب ألا تكون هذه الأحداث قابلة للقراءة عبر طلب ICS العام. وبدلاً من ذلك، يجب أن تكون متاحة فقط إما باستخدام “مفتاح API للمجموعة” خاص إضافي أو نوع آخر من القيود الآمنة. حالة الاستخدام هي الاختيار بين الأحداث “العامة” والأحداث “الخاصة” التي تكون مرئية وقابلة للتعديل فقط ضمن مجموعة مستخدمين خاصة.

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

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

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

ممم، أنا غير متأكد. يبدو كحل مؤقت، وليس حلاً حقيقياً :smiling_face_with_sunglasses:

يجب أن يكون بإمكان جميع الأشخاص ضمن مجموعة محددة للمجتمع إنشاء أحداث. كما يجب أن يتمكنوا من رؤيتها عند دخولهم إلى فئة “مجتمعهم”. هذا يعمل بالفعل بشكل جيد في إعدادنا الحالي مع 5 مجتمعات مختلفة. نستخدم صلاحيات الفئات التالية:

  1. فئة واحدة لكل مجموعة مجتمع. هذه الفئة لديها صلاحية “قراءة عامة فقط” و"قراءة/إنشاء/رد للمجتمع". هذه الفئة مُوحَّدة عبر AP للسماح للأشخاص الذين لا يملكون حسابات Discourse برؤية الأحداث، وكذلك للسماح بدمج تقويم Discourse في أنظمة طرف ثالث (مثل WordPress مع إضافة ICS)
  2. عدد متغير من الفئات الفرعية الداخلية. هذه الفئات الفرعية لديها فقط صلاحيات “قراءة/إنشاء/رد للمجتمع”. وهي غير مرئية بدون صلاحيات المجموعة المناسبة.

الفجوات الوحيدة هي:

  1. طلب ics الحالي يعرض جميع الأحداث
  2. طريقة ما لطلب أحداث مجتمع معين فقط عبر ICS/API.

جميع الأحداث، أم جميع الأحداث التي يملك المستخدم الذي تم استخدام مفتاح API الخاص به صلاحية الوصول إليها؟

كيف تتخيل عملية تحديد الأحداث التي يجب تضمينها في الطلب المعني؟

نقطة جيدة.

يوجد مستويان للمستخدمين لمفاتيح API: “مستخدم واحد” أو “جميع المستخدمين”. مفاتيح API التي نستخدمها حاليًا لطلب ICS لها مستوى “جميع المستخدمين”.

لذا، لحل هذه المشكلة، سنحتاج على الأرجح إلى مفاتيح API بمستوى “مستخدم واحد”. ويجب أن يملك المستخدم المحدد فقط مجموعة أذونات المجتمعات، ولا شيء آخر.

سأتحقق من هذا الأمر. ربما يمكن أن يحل هذه المشكلة …

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

بعض نتائج الاختبار:

  • تم إنشاء مفتاح API بمستوى مستخدم “مستخدم واحد”
  • أولاً، نظرت في إعدادات النطاق “دقيق”، لكنني لم أجد أي قيد على نقاط نهاية “الأحداث”. على الرغم من أن “الأحداث” مدرجة كمجموعة استعلام في Discourse API Docs
  • استخدمت “قراءة فقط” بدلاً من ذلك. النتيجة: “ليس لديك صلاحية لعرض المورد المطلوب.”

curl -kv https://xxx/discourse-post-event/events.ics?user_api_key=xxx لا يعيد ملف ics عند استخدام مفتاح API بمستوى “مستخدم واحد”. ويعيد قائمة كاملة بالأحداث مع مستوى مستخدم “جميع المستخدمين”. لا أرى طريقة لـ “تصفية” أحداث مجموعة مستخدمين خاصة.

كما قمت بفحص https:[xxxx]/admin/plugins/discourse-events/settings بحثًا عن أي إعدادات خاطئة محتملة تتعلق بـ API، دون أي نتائج

هل لديكم أي تعليقات؟