E-Mail-Blacklist: Frage zum Massendatenlöschungen/Deaktivieren

Nachdem die Domains auf die schwarze Liste gesetzt wurden, bleiben die bereits registrierten Konten unbeeinträchtigt und können weiterhin genutzt werden.

Ich möchte fragen, ob jemand eine Möglichkeit kennt, Benutzer basierend auf ihrer Registrierungs-E-Mail-Domain massenhaft zu löschen (Benutzer plus allen deren Inhalten), zu sperren oder stummzuschalten?

In meinem Fall würde dies das Löschen/Deaktivieren von Hunderttausenden von Konten ermöglichen, die die Catchall-Domain-Technik zur Registrierung genutzt haben.

Handelte es sich dabei um migrierte Daten? Das Löschen so vieler Konten wird sehr, sehr schmerzhaft sein – es sei denn, sie enthalten fast keine Inhalte.

Du kannst es über die Rails-Konsole machen, aber es klingt, als könnte das sehr unübersichtlich werden.

@codinghorror - Es sind keine migrierten Daten. Mir ist es recht, wenn es schmerzhaft und langsam ist, denn die Alternative, die Konten so zu lassen, ist wahrscheinlich schlimmer :hot_face: Bei der Menge an Inhalten ist es eine Mischung: Manche haben keine (normalerweise beabsichtigen Spammer, diese Konten später zu nutzen), manche haben nur wenig, und manche haben eine ganze Menge.

@pfaffman Super! Weißt du, wie das geht? Haha :pray:

Haben Sie schon einmal darüber nachgedacht, die Nutzer zu anonymisieren?

@fzngagan Das könnte eine solide Lösung sein. Weißt du, ob es eine Möglichkeit gibt, dies im Bulk durchzuführen?

Ja, das lässt sich über die Rails-Konsole erledigen. Die Frage ist jedoch: Nach welchen Kriterien möchtest du sie anonymisieren?

@fzngagan Super! Das Kriterium wäre: Alle E-Mails, die bei der Registrierung eine bestimmte Domain verwenden. Z. B. example@blacklisted.com, example2@blacklisted.com

Gib im Rails-Console diese Befehle ein und prüfe, ob sie die erwarteten Ergebnisse liefern (ersetze dein E-Mail-Muster durch ‘@gmail.com’):

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

Dann (mit Vorsicht fortfahren):

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

Ich bin kein Experte für Performance-Themen, daher weiß ich nicht genau, was passieren würde, wenn die Anzahl der Benutzer groß ist.

@fzngagan Wow, toll, vielen Dank! :slight_smile: Ich schätze das wirklich sehr.

Ich werde sicherstellen, dass alles aktuell gesichert ist, bevor ich das ausprobiere.

Kurze Frage: Weißt du, ob es möglich ist, Benutzer mit dieser Methode dauerhaft im Massenmodus stummzuschalten?

Ja. Die Rails-Konsole kann fast alles ausführen, was auch im Code möglich ist.