إليك وضعي. أحاول تشغيل تثبيت لـ Discourse على talk.example.com مع الحفاظ على موقع ويب على www.example.com. أريد أن يكون الأمر بحيث عندما يسجل المستخدم دخوله إلى موقع Discourse، يظهر مسجّل الدخول أيضًا في موقع www. وإذا سجل الخروج من موقع Discourse، يتم تسجيل خروجه من www. لقد قرأت الكثير من المواضيع هنا، ويبدو أن الإجابة الشائعة هي استخدام SSO. لا أعتقد أن هذا يمكن أن يعمل في وضعي، وإليك السبب.
الموقع على www.example.com هو موقع ثابت مبني باستخدام Hugo. لأولئك الذين لا يعرفونه، فكّر في Jekyll. لذا لا يوجد قاعدة بيانات أو أي خلفية (backend) على الإطلاق. إنه ليس “تطبيقًا”. أنا أريد ببساطة أن يكون Discourse بمثابة خلفية وهمية لهذا الموقع الثابت. إذا كان لديهم إشعارات غير مقروءة على Discourse، أريد أن أتمكن من عرض ذلك لهم عبر الموقع الثابت.
الطريقة الوحيدة التي يمكنني التفكير فيها للقيام بذلك هي عبر ملفات تعريف الارتباط (cookies) الخاصة بـ Discourse التي لا تتضمن النطاق الفرعي، وهو ما تشير أبحاثي حتى الآن إلى أن Discourse لا يدعمه.
إذا كان الموقع ديناميكيًا مع وجود خلفية برمجية، وكان لديك تسجيل دخول موحد (SSO) بين Discourse والموقع، لكانت هناك مسار واضح للمضي قدمًا. ستعرف الخلفية البرمجية هوية المستخدم، ويمكنها استخدام مفتاح واجهة برمجة تطبيقات إداري (Admin API Key) لاستعلام إشعارات Discourse الخاصة بالمستخدم الحالي وإرسالها مع الصفحة في كل طلب.
بما أن الموقع صفحة ثابتة، فهو لا يملك حقًا حالة تسجيل دخول في الوقت الحالي، أليس كذلك؟
بالضبط. إنه مجرد HTML و CSS وجافا سكريبت تقليدي للواجهة الأمامية.
في السيناريو المثالي، أود أن أتمكن من استخدام جافا سكريبت على الموقع الثابت، الذي يعمل في المتصفح، لاستخراج البيانات من ديسكورش.
الإشعارات مثال واحد، وسيكون تضمينها أمرًا رائعًا.
مثال آخر، أحب أن أتمكن من تعيين حقل مستخدم في ديسكورش ليملؤه المستخدمون. ثم على الموقع الثابت، أتمكن من الوصول إلى حقل المستخدم هذا لتغيير كيفية عرض المحتوى (عبر جافا سكريبت). على سبيل المثال، لإعادة ترتيب المحتوى وتخصيصه للمستخدم.
أعلم أن هذا سيكون حلاً غير مدعوم، ولكن هل هناك طريقة يمكنني من خلالها تغيير كيفية تعيين ديسكورش لملف تعريف ارتباط الجلسة الخاص بها بحيث لا يتضمن النطاق الفرعي، مع ضمان بقاء هذا التغيير قائمًا حتى بعد التحديثات؟