كيفية هيكلة Discourse لدورة تعليمية عبر الإنترنت؟

مرحبًا هانتر،

نحن حاليًا في مرحلة الاختبار التجريبي، وتكامل Discourse يسير على ما يرام. نستخدم تكامل SSO لإجبار المستخدمين على تسجيل الدخول في موقعنا. لقد عمل هذا بشكل جيد، رغم أنني لاحظت ما يلي:

  1. لا يقبل Discourse أسماء مستخدمين تحتوي على رمز “@”… فهو يقص اسم المستخدم ليحتوي فقط على الجزء الأول قبل “@”… وهذا قد يسبب مشاكل إذا قمت لاحقًا باستدعاء واجهات برمجة تطبيقات Discourse باستخدام ذلك الاسم كمُعامِل. لن يتعرف Discourse على اسم مستخدم مثل someone@example.com لأن اسم المستخدم المخزن في Discourse هو someone فقط… الحل السهل هو منع استخدام رمز “@” في أسماء المستخدمين الخاصة بك!

  2. عندما يسجل شخص ما في موقعك، يجب عليك استدعاء واجهة برمجة تطبيقات Discourse صراحةً لمزامنة مستخدم SSO، حيث قد ترغب في القيام بأشياء مع هذا المستخدم (مثل إضافته إلى مجموعة Discourse) قبل زيارته لموقع Discourse لأول مرة (وهو ما سينشط المزامنة التلقائية لـ SSO). لدي موقع مبني على Django، لذا أستخدم مكتبة pydiscourse، وهناك طريقة sync_sso تجعل هذا الأمر سهلاً للغاية (pydiscourse · PyPI)

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

لقد أنشأت جداول في موقع Django الخاص بي تتتبع مجموعات “الدورات” هذه والمجموعات المختلفة لـ “الدفعات” داخل كل دورة. لذا أستخدم هذه المعلومات عند إضافة/إزالة الطلاب، وما إلى ذلك: