Мы используем SSO, и когда кто-то закрывает свой аккаунт, мы удаляем его аккаунт в Discourse через API (или анонимизируем его, если есть публикации).
Однако что-то кажется не так, так как мы наблюдаем ошибки 403 при выполнении этих действий. Проведя небольшое расследование, я обнаружил следующее сообщение об ошибке, возвращаемое API:
{
"http_code": 403,
"body": "{\"deleted\":false,\"message\":\"Пользователь XXX имеет 0 публикаций, поэтому его нельзя удалить.\"}"
}
Но если публикаций 0, разве его нельзя удалить? Просмотрев информацию об этом конкретном аккаунте, я действительно не нашёл публикаций:
Однако есть личное сообщение 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 также учитывает только публичные публикации?

