Prevent users from deleting Topics themselves?

Hello,

I’m new here and hope I’ve chosen the right category.
Since the update to v2. 4. 0 it is possible for every user to delete his own threads. I don’t think that’s good. Is it possible to set somewhere that nobody but the moderators and administrators can delete complete threads? Anyone should be able to delete their own posts. Just no complete threads.

I’m already thanking you for the answers.

Yours sincerely
paeddy

From personal experience, I’ve seen that they’re only able to delete their own topics it doesn’t have any replies to it; which I feel is fine. It’s a user’s discretion to initially post the topic and show the content to others on the forum. The same goes for posts.

If a topic has people actively replying or has previously replied, they shouldn’t be able to delete the topic, however, I think this is already the case.

Thank you very much for your answer.

That the user can only delete the topic if there is no answer to it was not known to me. I just tried it. As soon as there is a reply, the topic can only be deleted by a moderator or administrator. I think that’s good. Thank you so much for the clarification.

Best regards
Paeddy

Это [частично] неверно начиная с версии 2.8.0.beta6: пользователь удалил свою учётную запись, и тема с более чем 70 ответами также стала удалённой для всех.

Я не думаю, что пользователь может удалить свою учётную запись самостоятельно — это могут сделать только администраторы. Более того, рекомендуется анонимизировать учётную запись пользователя, чтобы предотвратить описанную вами ситуацию.

  1. Пользователь зарегистрировался и опубликовал несколько сообщений.
  2. Я переместил некоторые сообщения из одной темы в новую (оффтоп/обсуждение).
  3. Сообщение от пользователя из пункта 1 было первым, поэтому он стал «автором темы». В этой новой теме люди обсуждают различные вопросы, накопилось более 80 сообщений.
  4. Через несколько дней пользователь удалил свою учётную запись. Это возможно, если аккаунт был зарегистрирован недавно.
  5. Тема была удалена.

Это реальная ситуация. Я обнаружил эту тему, потому что изначально думал, что пользователь просто удалил свою тему, но нет — он удалил только учётную запись, что привело к удалению темы. Discourse автоматически удаляет все данные аккаунта (включая все сообщения) при его удалении — в логах я вижу сначала «тема удалена», а затем «аккаунт удалён».

Хм, пользователь не должен иметь возможности удалить аккаунт после того, как он опубликовал сообщение.

Но это другая проблема, чем та, о которой говорится в первом сообщении этой темы. Возможно, стоит перенести это в новую тему.

Нет. Когда я пытался воспроизвести проблему, я успешно создал тему с помощью свежесозданного аккаунта, ответил на неё с разных аккаунтов, а затем удалил аккаунт. Тема была удалена.

Хорошо, я понял.
Вот шаги для воспроизведения ошибки.

  1. Возьмите относительно старый аккаунт (несколько дней), с несколькими сообщениями и одной темой.
  2. Удалите все свои сообщения вручную.
  3. Подождите истечения тайм-аута «удалить удалённые сообщения через» (по умолчанию 24 часа).
  4. Теперь у вас осталось одно сообщение — первое сообщение темы. Вы можете удалить свой аккаунт в профиле, и тема исчезнет. Это связано с настройкой delete user self max post count = 1 по умолчанию.

Вот демонстрационное видео с настройкой delete removed posts after = 0, поэтому сообщения удаляются мгновенно.
После удаления аккаунта тема также была удалена.

Проверьте настройки в /admin/site_settings/category/users

Ниже приведены настройки по умолчанию. Как указано внизу, вы можете установить последнее значение в -1, чтобы отключить самоудаление учетных записей пользователей. Если это слишком радикальное решение, вы можете уменьшить максимальное количество дней в параметре delete user max post age… и/или уменьшить значение delete all posts maximum.

Команда delete user self max post count = 0 должна запрещать удаление пользователя, если этот аккаунт создал тему с ответами, так как первое сообщение нельзя удалить.

Интересно, почему по умолчанию установлено значение = 1?

Если у пользователя всего несколько публикаций, он может удалить свою учётную запись.

Я полагаю, это предназначено для ситуаций, когда кто-то регистрируется, делает один пост, а затем передумал. Вместо того чтобы удалять свой пост перед удалением аккаунта, они могут просто удалить аккаунт.

Если вы не хотите, чтобы пользователи могли удалять свои собственные аккаунты и требуют, чтобы они запрашивали удаление, установите значение -1.

Однако параметр delete all posts max следует уменьшить, если у вас возникают проблемы с пользователями, которые удаляют множество постов одновременно. Параметр delete user max post age определяет период времени, в течение которого аккаунт пользователя может быть удалён после его первого поста. Уменьшите это значение, чтобы сократить количество дней, в течение которых аккаунт можно удалить после первого поста.

Снижение значений delete all posts max и delete user max post age до более низких не поможет в моём случае. В моей ситуации аккаунт был создан около недели назад, содержал 7 сообщений, но пользователь был автором темы.

Удалённая тема появилась только в логах сотрудников (удаление выполнено от имени учётной записи «system»). Это меня запутало: я не мог найти тему, которую точно помнил.

Это действие было совершено человеком, который разбирается в настройках Discourse по умолчанию. Сообщения были помечены на удаление, затем через 24 часа удалены, после чего человек изменил свой адрес электронной почты на одноразовый и удалил аккаунт.

Первый из указанных выше параметров, скорее всего, будет наиболее эффективным для противодействия такому поведению — уменьшение количества дней, отведённых для самого старого сообщения.

По умолчанию создатель темы может удалить свою тему. Ограничение этой возможности с помощью указанных выше настроек должно помочь предотвратить удаление в зависимости от количества сообщений/ответов. Последний параметр должен полностью запретить удаление тем (за исключением случаев, когда это делают сотрудники).

:thinking: Не вижу логики в том, чтобы менять адрес электронной почты и сразу же удалять аккаунт… если только одноразовый аккаунт не будет использоваться для получения уведомления об удалении аккаунта? Но я не думаю, что такое уведомление будет отправлено. Зачем уведомлять спамера о том, что его аккаунт удалён? Спамить спамера? :laughing:

Держу :crossed_fingers: за то, что у вас не повторится подобная ситуация.

Отличная работа по расследованию, @ValdikSS — по сути, вы описали следующее:

Пользователь может удалить свою учётную запись, если в ней есть только одна или ноль сообщений (по умолчанию в Discourse). Однако, если это единственное сообщение является темой, вся тема удаляется.

Это примерно соответствует задумке. Мы, кажется, не предусмотрели этот особый случай, когда пользователь создаёт тему как своё единственное сообщение.