Remover completamente os dados do usuário do sistema

Ei, então podemos ter uma situação em que queremos apagar completamente todos os vestígios de um usuário do banco de dados. Não entrarei em detalhes, pois é sensível, mas também devido ao GDPR, podemos ter que provar que não mantemos nenhuma cópia das informações do usuário em nosso sistema.

Existem algumas partes que acho que identifiquei:

  • O processo de anonimização atual é bom para o perfil do usuário
  • Editar todas as suas respostas com um simples excluído a pedido do usuário também seria aceitável, desde que o histórico de edições seja removido.

Então, o que realmente acho que precisaria é de uma consulta (ou uma função Ruby?) que substitua todas as mensagens de um usuário por excluído a pedido do usuário e apague todo o histórico de edições de suas mensagens.

Alguém com experiência suficiente em código de banco de dados/Discourse pode ajudar com isso?

Você poderia apenas excluí-los?

u=User.find_by_username('byebye')
posts=Post.where(user_id: u.id)

e então chamar PostDestroyer em todos os posts. (Não me lembro exatamente como fazer isso de imediato.)

Se você realmente quiser substituir os posts deles por “excluído por…”, então você faria algo como

posts.update_all(raw: "excluído por solicitação do usuário")

E então você precisaria limpar coisas do modelo PostRevision, talvez

posts.each do |p|
  bad=PostRevision.where(post_id: p.id)
  bad.destroy_all
end

Você gostaria de fazer alguns deles manualmente como teste, ou em um site de staging se você for realmente cuidadoso.

2 curtidas

Não sei, é por isso que perguntei :slight_smile:

Vou tentar em um ambiente de palco nos próximos dias. Obrigado por enquanto Jay, sempre um tesouro! :heart:

Prefiro editar porque não quero que tópicos sejam destruídos apenas porque alguém está saindo, enquanto talvez outros tenham contribuído com discussões interessantes sobre o tópico.

Apenas uma preocupação é quando os usuários têm toneladas de respostas. Estou falando de dezenas de milhares.

2 curtidas

Se você tiver uma solicitação de usuário para exclusão de todos os seus dados, isso não incluirá necessariamente todas as suas postagens/respostas, pois você provavelmente sabe que a anonimização pode ser suficiente para o GDPR, dado que as postagens não incluem informações altamente pessoais.

Houve muitos tópicos sobre isso aqui, as leis variam para cada país.

2 curtidas

De fato, após o primeiro usuário ser anonimizado, simplesmente mescle os futuros usuários anonimizados no primeiro.

Isso, na prática, faria com que todas as contas anonimizadas fossem exibidas como um “usuário excluído”, como em outras plataformas como o Discord.

Eu não recomendaria fazer isso sempre, mas é uma opção que pode proteger a identidade dos autores das postagens, já que o número aleatório não será exclusivo para um único autor. A desvantagem é que pode se tornar mais difícil acompanhar as conversas do tópico se não se souber se as postagens são do mesmo autor ou de autores diferentes.

Isso é bastante impossível, especialmente com usuários que têm muitas respostas.

Notei que as funcionalidades de mesclar usuários falham com bastante frequência quando tento mesclar um usuário com milhares de mensagens, mesmo com apenas uma nova (caso de uso: usuário antigo retornando e não tendo as credenciais, verificando comigo, tudo certo, tentando mesclar o novo usuário com algumas respostas com o usuário antigo original).

Isso parece que você precisa registrar um relatório de bug

1 curtida