Supprimer complètement les données utilisateur du système

Salut, nous pourrions avoir une situation dans laquelle nous voudrions effacer complètement toute trace d’un utilisateur de la base de données. Je n’entrerai pas dans les détails car c’est sensible, mais aussi à cause du RGPD, nous pourrions devoir prouver que nous ne conservons aucune copie des informations de l’utilisateur dans notre système.

Il y a certaines parties que je pense avoir identifiées :

  • Le processus d’anonymisation actuel convient pour le profil de l’utilisateur
  • Modifier toutes ses réponses avec un simple supprimé à la demande de l'utilisateur serait également acceptable, à condition que l’historique des modifications soit supprimé.

Donc, ce dont je pense avoir vraiment besoin, c’est d’une requête (ou d’une fonction ruby ?) qui remplace tous les messages d’un utilisateur par supprimé à la demande de l'utilisateur et efface tout l’historique des modifications de ses messages.

Y a-t-il quelqu’un ayant suffisamment d’expérience en base de données/code Discourse qui puisse aider à cela ?

Pourriez-vous simplement les supprimer ?

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

et ensuite appeler PostDestroyer sur tous les posts. (Je ne me souviens pas exactement comment faire ça à la volée.)

Si vous voulez vraiment remplacer leurs posts par « supprimé par… », vous feriez quelque chose comme

posts.update_all(raw: "supprimé par demande de l'utilisateur")

Et ensuite, vous devrez effacer des éléments du modèle PostRevision, peut-être

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

Vous voudriez en faire quelques-unes à la main en guise de test, ou sur un site de staging si vous êtes vraiment prudent.

2 « J'aime »

Je ne sais pas, c’est pour ça que j’ai demandé :slight_smile:

J’essaierai dans un environnement de staging dans les prochains jours. Merci pour l’instant Jay, toujours un trésor ! :heart:

Je préférerais éditer car je ne veux pas que des sujets soient détruits simplement parce que quelqu’un part, alors que d’autres ont peut-être contribué avec des discussions intéressantes sur le sujet.

Une seule préoccupation concerne les utilisateurs qui ont des tonnes de réponses. Je parle de dizaines de milliers.

2 « J'aime »

Si vous avez une demande d’un utilisateur pour la suppression de toutes ses données, cela n’inclura pas nécessairement tous ses messages/réponses car vous savez probablement que l’anonymisation peut suffire pour le RGPD étant donné que les messages ne contiennent pas d’informations hautement personnelles.

Il y a eu beaucoup de sujets à ce sujet ici, les lois varient pour chaque pays.

2 « J'aime »

En effet, après anonymisation du premier utilisateur, il suffit de fusionner les futurs utilisateurs anonymisés dans le premier.

Cela aurait pour effet de faire en sorte que tous les comptes anonymisés soient simplement lus comme un « utilisateur supprimé », comme sur d’autres plateformes comme Discord, qui l’afficheront simplement.

Je ne recommanderais pas de toujours faire cela, mais c’est une option qui peut protéger l’identité des auteurs des publications, car le numéro aléatoire ne sera pas attribué à un seul auteur. L’inconvénient est qu’il peut devenir plus difficile de suivre les conversations si l’on ne sait pas si les publications proviennent du même auteur ou d’auteurs différents.

C’est souvent impossible, surtout avec des utilisateurs ayant beaucoup de réponses.

J’ai remarqué que les fonctionnalités de fusion d’utilisateurs échouent assez souvent lorsque j’essaie de fusionner un utilisateur ayant des milliers de messages, même avec un seul nouveau message (cas d’utilisation : un ancien utilisateur revient et n’a pas les identifiants, vérification avec moi, tout va bien, tentative de fusionner le nouvel utilisateur avec quelques réponses avec l’ancien utilisateur d’origine).

Cela ressemble à une demande de signalement de bug.

1 « J'aime »