كيفية حذف سجل SSO باستخدام API؟ أنا أستخدم Discourse وأقوم بتغيير external_id. كيف يمكنني مسح السجلات القديمة لهذا المستخدم دون فقدان حساب المستخدم أو منشوراته؟
ربما يمكنك ببساطة حذف جميع سجلات SSO مرة واحدة من وحدة تحكم Rails والسماح لهم بإعادة الاتصال عبر عنوان البريد الإلكتروني؟ لا أتذكر على وجه اليقين اسم الجدول الذي تبحث عنه، لكنه قد يكون شيئًا مثل:
UserAssociatedAccount.all.destroy_all
أعتقد أن هناك بعض المواضيع الأخرى المتعلقة بهذه المشكلة. هل قمت بالبحث عنها؟
من المتوقع أن لا يتغير الـ external_id الذي يتم تمريره من مزود SSO مطلقًا. إذا كان ذلك ممكنًا، يجب تجنب تغيير قيم external_id الخاصة بالمستخدم.
طالما أنك لا تضبط معلمة SSO require_activation على true، يمكنك حذف جميع سجلات SSO كما ذكر جاي. للقيام بذلك، أدخل وحدة تحكم موقعك وقم بتشغيل الأمر التالي:
SingleSignOnRecord.destroy_all
قبل القيام بذلك، يجب أن تتأكد من عدم ضبط معلمة require_activation على true في حمولة SSO. إذا تم ضبط هذه المعلمة، لن يتم العثور على المستخدمين بناءً على عناوين بريدهم الإلكتروني في المرة التالية التي يسجلون فيها الدخول إلى الموقع. وبدلاً من ذلك، سيواجهون خطأً عند محاولة تسجيل الدخول.
إذا لم تكن معلمة require_activation مضبوطة على true، سيتم العثور على المستخدمين بناءً على عناوين بريدهم الإلكتروني في المرة التالية التي يسجلون فيها الدخول إلى ديسكورس. سيتم إنشاء سجل SSO جديد لهم في هذا الوقت. إذا كانت عناوين البريد الإلكتروني لأي مستخدم غير متزامنة بين موقع مزود SSO الخاص بك ومنصة ديسكورس، فسيواجهون مشاكل في المرة التالية التي يسجلون فيها الدخول إلى ديسكورس. يمكنك العثور على بعض التفاصيل حول إصلاح هذه المشاكل هنا: Debug and fixing common DiscourseConnect issues.
إذا كنت تنوي تشغيل الأمر الذي نشرته أعلاه، فتأكد من إنشاء نسخة احتياطية من قاعدة بيانات موقعك قبل تشغيل الأمر. إذا حدث أي خطأ، يمكنك استعادة ملف النسخة الاحتياطية.
هل من الممكن الحصول على وصول إلى وحدة تحكم Rails في خطة STANDARD الخاصة بمنتدى Discourse الخاص بي؟ إذا كان الأمر كذلك، فكيف يمكنني المضي قدمًا؟
أرسل رسالة بريد إلكتروني إلى support@discourse.org أو راسل @support لتنفيذ الأمر المذكور أعلاه.