نحن نستخدم SSO، وعندما يغلق شخص ما حسابه، نحذف حساب Discourse الخاص به أيضًا عبر API (أو نجعله مجهول الهوية إذا كان لديه منشورات).
ومع ذلك، يبدو أن هناك مشكلة ما، حيث لاحظنا ظهور بعض أخطاء 403 أثناء تنفيذ هذه العملية. بعد فحص الأمر قليلاً، وجدت أن رسالة الخطأ التي أعادها استدعاء API هي:
{
"http_code": 403,
"body": "{\"deleted\":false,\"message\":\"User XXX has 0 posts, so they can't be deleted.\"}"
}
لكن، إذا كان عدد المنشورات صفرًا، فيجب أن يكون من الممكن حذف الحساب؟ عند النظر إلى معلومات هذا الحساب تحديدًا، نجد بالفعل أنه لا يحتوي على أي منشورات:
ومع ذلك، توجد رسالة خاصة مرسلة إلى Discobot (دليل تعليمي).
لذا، أعتقد أن هناك عدة نقاط هنا:
- رسالة الخطأ التي رفضت حذف المستخدم تحسب فقط المنشورات العامة، ولكن ربما ينبغي أن تحسب الرسائل الخاصة أيضًا؟
- في الواقع، هل يجب أن تمنع الرسائل الخاصة حذف الحساب؟ أفهم المنطق وراء أن حذف الحساب يعقد السرد في موضوع عام، لكن في حالة الرسائل الخاصة، ربما لا يكون هذا الحجة قوية بنفس القدر؟
- إذا كانت الإجابة على السؤال السابق لا تزال بنعم (أي أن الرسائل الخاصة يجب أن تمنع حذف الحساب)، فهل يجب أن تُحتسب الرسائل المرسلة إلى Discobot أيضًا في منع حذف الحساب؟ ما أعنيه هو أن معظم الأشخاص سيمرون بالدليل التعليمي ويرسلون رسائل خاصة إلى Discobot… مما يجعل من المستحيل عمليًا حذف العديد من الحسابات التي لم تشارك في المناقشات، فقط لأنها أجرت الدليل التعليمي (ربما يكون هذا صحيحًا فقط بعد مرور
delete_user_max_post_ageيومًا، ولكن لا يزال).
أخيرًا، ولست متأكدًا مما إذا كان هذا مرتبطًا بالنقطة 1، ولكن عند التحقق من معلومات API الخاصة بهذا المستخدم، يتم إرجاع:
post_count: 0
can_be_deleted: 1
can_delete_all_posts: 0
لكن، في الواقع، لا يمكن حذف هذا المستخدم. لذا ربما تكون منطقية can_be_deleted تحسب فقط المنشورات العامة أيضًا؟

