التكامل مع نظام مصادقة مخصص حيث لا تكون البريد الإلكتروني فريدًا

هناك قائمة بطرق التثبيت هنا: Set up a local Discourse Development Environment?. لدي موقع تطوير غير Docker (باستخدام دليل Ubuntu). إذا كان بإمكانك القيام بذلك، أعتقد أنك ستحصل على أفضل النتائج من النهج غير Docker. أحد الأسباب التي تجعلني أستخدمه هو عدم الاضطرار إلى التعامل مع مشاكل الشبكة لطلبات API بين Discourse والتطبيقات الأخرى التي أقوم بتطويرها محليًا. إنه أسرع من Docker أيضًا.

يجب أن يكون كذلك. تأكد من أن التطبيق الذي تقوم بإنشاء حمولة SSO عليه لا يقوم بتحويل القيمة المنطقية true إلى 1. هذه مشكلة شائعة. للتغلب على ذلك، يمكنك تعيين أي قيم منطقية في حمولة SSO إلى السلاسل النصية "true" أو "false". سيقوم Discourse بتفسيرها بشكل صحيح. تحقق من ذلك أولاً لمعرفة ما إذا كانت هذه هي المشكلة. قد يكون شيئًا آخر. الكود الذي يتعامل مع avatar_force_update معقد نوعًا ما، ولكنه قابل للقراءة: discourse/app/models/discourse_connect.rb at 187204705323b650d61ed25862eb1a0c733aa63c · discourse/discourse · GitHub.

تعديل: بالنسبة لمشكلة القيم المنطقية في حمولة SSO، أعتقد أنه من الأدق القول أنه في عملية إنشاء حمولة SSO، ستقوم البيئة بتحويل القيم المنطقية true/false إلى سلاسل نصية. يتوقع Discourse أن تكون السلاسل النصية "true" أو "false"، وقد تتعامل بيئات البرمجة الأخرى معها بشكل مختلف. على سبيل المثال:

PHP:

wp> strval(true)
=> string(1) "1"

على عكس Ruby:

irb(main):001> true.to_s
=> "true"

Python (لست متأكدًا من كيفية تعامل Discourse مع هذا):


>>> str(True)
'True'
إعجابَين (2)