Черный список email: вопрос о массовом удалении/отключении

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

Хотелось бы узнать, знает ли кто-нибудь способ массового удаления (удаление пользователя и всего его контента), приостановки или ограничения активности пользователей на основе домена их адреса регистрации?

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

Это были перенесенные данные? Удаление такого количества аккаунтов будет очень-очень болезненным — если только у них почти нет контента.

Вы можете сделать это из консоли Rails, но это звучит так, будто может получиться очень запутанно.

@codinghorror - Это не мигрированные данные. Мне не страшны боль и медлительность, так как альтернатива — оставить аккаунты — вероятно, ещё хуже :hot_face: Что касается объёма контента, то это смесь: у некоторых его нет (обычно спамеры планируют использовать эти аккаунты позже), у некоторых минимальный объём, а у некоторых — целые горы.

@pfaffman Отлично! Вы знаете, как это сделать? Ха-ха :pray:

Думали ли вы об анонимизации пользователей?

@fzngagan Это может быть надежное решение. Знаете, есть ли способ сделать это массово?

Да. Это можно сделать из консоли Rails. Но вопрос в том, по каким критериям вы хотите их анонимизировать?

@fzngagan Отлично! Критерием будет: все электронные письма, в которых при регистрации используется определённый домен. Например: example@blacklisted.com, example2@blacklisted.com

В консоли Rails введите эти команды и проверьте, дают ли они ожидаемые результаты (замените шаблон вашего email на ‘@gmail.com’)

idlist = UserEmail.where("email like '%@gmail.com'").pluck(:user_id)
users = User.find(idlist)

затем (действуйте осторожно)

system_user = Discourse.system_user
users.each do |user|
  UserAnonymizer.new(user, system_user).make_anonymous
end

Я не эксперт в вопросах производительности, поэтому не знаю точно, что произойдет, если количество пользователей будет большим.

@fzngagan Вау, здорово, большое спасибо! :slight_smile: Я очень это ценю.

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

Быстрый вопрос: знаете ли вы, возможно ли с помощью этого метода массово заглушить пользователей (навсегда)?

Да. Консоль Rails может выполнять практически всё, что можно сделать из кода.