ملخص - عندما يضع مستخدم WordPress جديد طلبًا أو يسجل، يبدو أنه بطريقة ما يقوم بالكتابة فوق المستخدمين الحاليين في Discourse أو الاتصال بهم. لست متأكدًا من كيفية استكشاف الأخطاء وإصلاحها.
الخلفية:
نستخدم المكون الإضافي wp-discourse لـ SSO حيث يكون WordPress هو موفر DiscourseConnect.
أطلقنا مجتمع Discourse الخاص بنا، والذي يتم استضافته على Digital Ocean droplet.
عندما أطلقنا مجتمع Discourse وقمنا بالاتصال بـ SSO باستخدام المكون الإضافي wp-discourse، كنا نستضيف WordPress على AWS Lightsail، باستخدام Plesk كلوحة تحكم لدينا.
انتقلنا إلى استضافة WordPress المُدارة من Nexcess، في وقت سابق من هذا العام وبدا أن موصل Discourse لا يزال سليمًا.
لم نقم بترحيل مستخدمينا عندما انتقلنا إلى تثبيت WordPress الجديد الخاص بنا. تم تصديرهم، ونخطط لاستيرادهم قريبًا.
تم إغلاق موقع WordPress الخاص بنا لفترة بينما كنا نجري بعض التعديلات الكبيرة.
على مدار الأشهر القليلة الماضية، كان لدينا الكثير من الأشخاص الذين يضعون طلبات على WordPress (WooCommerce)، ولاحظنا شيئًا غريبًا… أنه عندما تنظر إلى حساب مستخدم في WordPress وتنظر إلى حقل اسم مستخدم Discourse، فإن اسم المستخدم الخاص بهم يظهر كحسابات المستخدمين الحاليين من Discourse. بطريقة ما يبدو أن اتصالنا بـ Discourse معطل. قام مستخدم بالتسجيل اليوم واسم المستخدم الخاص به في Discourse Username هو tennisdpm والذي يمكنك رؤيته كـ مستخدم حالي، والذي سجل في عام 2020.
سنقوم قريبًا بترحيل (إضافة) جميع المستخدمين الذين لديهم حسابات على مثيل WordPress القديم الخاص بنا، وإضافتهم إلى المثيل الجديد الخاص بنا، ولكن بالنظر إلى أنه يبدو أن هناك بعض التعارض مع المستخدمين الحاليين والمستخدمين الجدد الذين يسجلون، نريد وضع خطة عمل من شأنها منع استمرار التعارضات ومزامنة مستخدمي WP الحاليين (عبر البريد الإلكتروني كمعرف فريد) مع مستخدمي Discourse، وتوفير حسابات Discourse SSO جديدة، عندما يأتي مستخدمو WP جدد.
نقدر حقًا بعض المساعدة والتوجيه حول كيفية المضي قدمًا!
يا إلهي!! شكراً على التنبيه @omarfilip! هل هناك طريقة لإعادة تعيين هذا أو منع حدوثه مرة أخرى؟ أو ربما يمكننا/يجب علينا إيقاف تشغيله حتى ننتهي من ترحيل جميع المستخدمين السابقين.
لدينا حوالي 80 مستخدمًا في ووردبريس (WP) حاليًا يحتاجون إلى “فصلهم” عن مستخدمي ديسكورس (Discourse) الحاليين الذين يبدو أنهم مرتبطون بهم. ثم لدينا أيضًا حوالي 750 مستخدمًا نحتاج إلى استيرادهم من نسختنا القديمة، والتأكد من أنهم لا يعانون من نفس المشكلة التي نواجهها حاليًا.
كنت آمل أن يتم ربط الحسابات في ووردبريس (WP) بحسابات ديسكورس (Discourse) بناءً على عنوان البريد الإلكتروني كمعرف فريد… وليس معرفات المستخدمين الخارجية/المستخدمين.
مرحباً @jord8on، طريقة عمل المطابقة في جانب discourse هي أنها تحاول أولاً مطابقة المعرف الخارجي (الذي يشير الآن إلى مستخدمين مختلفين حيث قمت بتغيير قاعدة بيانات Wordpress الخاصة بك)، ثم تحاول المطابقة باستخدام عنوان البريد الإلكتروني. هناك بعض الأسباب الوجيهة لاستخدام المعرف أولاً. البريد الإلكتروني ليس معرفاً لامركزياً جيداً.
لذلك، ما تحتاج إلى القيام به هو حذف سجلات تسجيل الدخول الموحد (SSO) في discourse التي تم إنشاؤها عندما كنت تستخدم قاعدة بيانات Wordpress القديمة الخاصة بك. يمكنك استخدام تاريخ ووقت لتحديدها، على سبيل المثال، ستقوم بشيء مثل هذا على مثيل discourse الخاص بك
./launcher enter app
rails c
SingleSignOnRecord.where("created_at < ?", 1.month.ago) // تحقق مما إذا كان هذا يتطابق مع توقعاتك
SingleSignOnRecord.where("created_at < ?", 1.month.ago).delete_all
سيتم مطابقة المستخدمين القدامى الذين تم استيرادهم إلى قاعدة البيانات الجديدة على أساس البريد الإلكتروني مع حسابات discourse الموجودة لديهم (حيث لن يتطابق معرف Wordpress الجديد الخاص بهم مع أي سجلات SSO).
أود أيضاً إزالة جميع بيانات discourse_username على Wordpress والسماح بإعادة مزامنتها تلقائياً عبر خطاف المستخدم. ستحتاج إلى تشغيل هذا (ربما باستخدام WP CLI)، والذي يحذف جميع الإدخالات لحقل البيانات الوصفية discourse_username.
بالنسبة للأشخاص المستقبليين الذين يقرؤون هذا، إذا كنت تستخدم DiscourseConnect مع قاعدة بيانات Wordpress واحدة، ثم انتقلت إلى قاعدة بيانات Wordpress جديدة تماماً دون ترحيل، فستواجه هذا النوع من المشكلات. يجب عليك طلب المساعدة قبل إجراء هذا النوع من التغيير.