Невозможно удалить пользователя с личными сообщениями: вводящее в заблуждение сообщение об ошибке

Мы используем SSO, и когда кто-то закрывает свой аккаунт, мы удаляем его аккаунт в Discourse через API (или анонимизируем его, если есть публикации).

Однако что-то кажется не так, так как мы наблюдаем ошибки 403 при выполнении этих действий. Проведя небольшое расследование, я обнаружил следующее сообщение об ошибке, возвращаемое API:

{
    "http_code": 403,
    "body": "{\"deleted\":false,\"message\":\"Пользователь XXX имеет 0 публикаций, поэтому его нельзя удалить.\"}"
}

Но если публикаций 0, разве его нельзя удалить? Просмотрев информацию об этом конкретном аккаунте, я действительно не нашёл публикаций:

Однако есть личное сообщение Discobot (туториал).

Таким образом, я считаю, что здесь есть несколько моментов:

  1. Сообщение об ошибке, отклонившее удаление пользователя, учитывает только публичные публикации, но, возможно, оно должно учитывать и личные?
  2. Действительно ли личные сообщения должны препятствовать удалению аккаунта? Я понимаю логику того, что удаление аккаунта усложняет повествование в публичной теме, но в случае с личными сообщениями этот аргумент, возможно, не так убедителен?
  3. Если ответ на предыдущий вопрос всё ещё «да» (то есть личные сообщения всё ещё должны препятствовать удалению аккаунта), должны ли сообщения, отправленные Discobot, также учитываться при предотвращении удаления аккаунта? Что я имею в виду: большинство людей проходят туториал и отправляют личные сообщения Discobot… что делает практически невозможным удаление многих аккаунтов, которые никогда не участвовали в обсуждениях, просто потому, что они прошли туториал (возможно, это верно только после истечения delete_user_max_post_age дней, но всё же).

Наконец, я не уверен, связано ли это с пунктом 1, но при проверке информации об этом пользователе через API возвращается:
post_count: 0
can_be_deleted: 1
can_delete_all_posts: 0

Но фактически этот пользователь не может быть удалён. Возможно, логика can_be_deleted также учитывает только публичные публикации?

4 лайка

Отличное расследование! Нам как минимум стоит исправить сообщение об ошибке.

"body": "{\"deleted\":false,\"message\":\"Пользователь XXX имеет 0 сообщений, поэтому его нельзя удалить.\"}"

Оно должно звучать так:

Пользователь имеет x сообщение(й), поэтому его нельзя удалить.

Также, вероятно, стоит уточнить ситуацию, так как это вопрос возникал довольно часто:

Пользователь имеет x сообщение(й) — либо публичные посты, либо личные сообщения, — поэтому его нельзя удалить.

3 лайка

Готово. Я также исправил неверное количество постов в сообщении.

4 лайка

Спасибо @vinothkannans! :+1:

Есть ли шанс, что также будет рассмотрен вопрос с тем, что can_be_deleted, похоже, указывает на возможность удаления учётной записи, хотя это невозможно (из-за личных сообщений)? В данный момент нам приходится сначала пытаться удалить пользователя, а затем, если это не удаётся, переходить к анонимизации (поскольку can_be_deleted нельзя доверять).

2 лайка

Может ли проблема, обсуждаемая в следующей теме, каким-либо образом быть связана с проблемами, обсуждаемыми в этой теме?

2 лайка

Эта тема была автоматически закрыта через 3 дня. Новые ответы больше не принимаются.