أنا أستخدم سكربت مخصص لترحيل مستخدمي Drupal إلى Discourse ولكن تم حفظ كلمة المرور كسلسلة تجزئة ولا يمكن للمستخدم تسجيل الدخول بكلمة مرور موثوقة مثل (admin@123)
ولكنه يسجل الدخول باستخدام تجزئة كلمة المرور الخاصة بهم مثل
هذه واحدة من أقدم الإضافات الخارجية الموجودة (أكثر من 9 سنوات الآن!) وقد تم صيانتها وتعمل طوال الوقت. قد لا تعمل بالنسبة لك ولكن طريقة حل ذلك هي معرفة سبب عدم عملها بالنسبة لك بدلاً من محاولة مسار بديل.
هل يمكنك إعادة صياغة هذا من فضلك؟ أنا لا أفهم ما تقوله.
هل يقوم موقع Drupal الخاص بي بتخزين كلمات مرور المستخدمين في رمز مشفر والاحتفاظ بها في قاعدة بيانات قمت بنقل جميع المستخدمين إلى منصة تسمى Discourse باستخدام واجهة برمجة تطبيقات dsiscourse. أقوم بإنشاء حمولة بتفاصيل المستخدم ورموز كلمات المرور الخاصة بهم من قاعدة بيانات Drupal وأضعها في Discourse.
اعتقدت أن المستخدمين سيكونون قادرين على استخدام نفس تفاصيل تسجيل الدخول الخاصة بهم على Drupal، لكنها لا تعمل. لا يقبل Discourse كلمة المرور الفعلية للمستخدم، مثل “admin@123”. بدلاً من ذلك، يستخدم رمز تجزئة كلمة مرور المستخدم مثل “3sdfd32423@#423fdsfr”.
يأخذ Discourse رموز كلمات المرور من Drupal ويضعها في خوارزميته المشفرة الخاصة به في قاعدة بياناته الخاصة.
هل يمكنك أن ترينا كيف فعلت ذلك؟
إذا كنت تستخدم واجهة برمجة التطبيقات (API)، فلا يجب عليك تعيين تجزئة Drupal ككلمة مرور. يجب عليك تعيين التجزئة كحقل مستخدم مخصص يسمى import_pass. لست متأكدًا مما إذا كان ذلك ممكنًا باستخدام واجهة برمجة التطبيقات (API).
هناك فرق بين إنشاء حقل مستخدم بهذا الاسم، ووجود حقل مخصص بهذا الاسم. لذلك يتم تخزين التجزئة في المكان الخطأ.
أعتقد أن المشكلة هي أن الأخير (حقل مخصص) غير متاح عبر واجهة برمجة التطبيقات (API).
أعتقد أن أفضل طريقة للمضي قدمًا هي وجود بعض التعليمات البرمجية المخصصة لمرة واحدة تنقل محتوى حقل المستخدم إلى الحقل المخصص الفعلي.
(لقد نظرت في تغيير المكون الإضافي بحيث ينظر أيضًا إلى حقل المستخدم ولكن أعتقد أن عرض هذه التجزئات على واجهة المستخدم يمثل خطرًا أمنيًا، لذلك لن أفعل ذلك).
سيعمل هذا، قم بتشغيله من وحدة تحكم Rails (أضع علامة لك لرؤية التعديل @Hitesh_Sharma)
ufkey = "user_field_#{UserField.find_by(name: 'import_pass').id}"
User.all.each do |u|
if u.custom_fields.key?(ufkey)
u.custom_fields[:import_pass] = u.custom_fields[ufkey]
u.custom_fields.delete(ufkey)
u.save_custom_fields
end
end