seenthis / seenthis_squelettes

plugin "squelettes" de seenthis
11 stars 6 forks source link

Supprimer mon profil #158

Open brunob opened 8 years ago

brunob commented 8 years ago

Je remarque qu'on a déjà des chaînes de langues qui mentionnent la suppression de profil, cf :

https://github.com/seenthis/seenthis_squelettes/blob/master/lang/seenthis_fr.php#L107

Du coup, je me propose d'ajouter le nécessaire pour que ça soit possible depuis l'interface, ça fera des vacances à @Fil :p

Pour la procédure, je pense que l'action nécessite une validation par email : on clique sur le bouton, ça envoie un mail à l'auteur avec un lien d'action sécurisée par un token (un peu comme on le fait déjà pour les notifications de spam dans SPIP).

Du coup, il me faudrait la recette (listes des requêtes sql ou autre) utilisée par les admins lors d'une demande de suppression. Quelqu'un⋅e aurait ça pour moi ?

Fil commented 8 years ago

la recette est dans un script accessible en CLI : https://github.com/seenthis/seenthis-cli/

Fil commented 8 years ago

Pour la fonctionnalité, un gros souci est le temps que met la requête à s'exécuter ; je ne sais pas si elle sera jouable en direct par le serveur web (timeout assuré). Mais si on vérifie qu'elle peut être jouée en plusieurs fois, on peut la découper en petits morceaux et la faire jouer par un génie.

brunob commented 8 years ago

@Fil super, merci pour la recette mignon :)

Oui, l'idée d'un génie qui découperait la tâche en petits blocs exécutés par job queue me semble aussi une bonne piste.

rastapopougros commented 7 years ago

Ça peut aussi être juste un drapeau ajouté sur le compte (statut poubelle quoi), et ensuite une tâche cli/serveur est lancée en cron une fois par 24h et supprime les utilisateurs et contenus. Donc pas en hit PHP HTTP.

Fil commented 7 years ago

La demande est récurrence : https://seenthis.net/messages/66435

l'idée pourrait être d'appliquer immédiatement "masquer le compte" (qui basculerait tous les messages en privé + le compte en "silencieux", avec une suppression effective des données au bout de x jours (3 ou 4)

rastapopougros commented 7 years ago

Je trouve quand même ça toujours problématique pour toutes les personnes qui ont mis des étoiles à des trucs à garder en mémoire.

Si dans tous les cas ça se fait en CLI, une fois par nuit par exemple, yorait peut-être moyen de réfléchir à un truc plus fin. Surtout que des fois ya des énormes conversations en commentaires, et les gens n'ont jamais demandé à ce que leurs messages soient supprimés, avec parfois dedans des trucs tout aussi intéressant voire plus que le seen de départ.

Exemple de choses possibles :

De temps en temps ça fera peut-être quelques trucs bizarres, mais moins que de perdre plein de contenus et marques-pages ! Et du coup tous les gens qui ont étoilé gardent tout.

rastapopougros commented 7 years ago

Proposition de fonctionnement :

Interface : bouton pour supprimer son compte => confirmation par email => drapeau sur le compte utilisateurice (poubelle) => attente d'un délai => Cron qui passe et qui supprime le compte et anonymise les anciens contenus.

Tout le texte des anciens contenus est supprimé ou remplacé par [contenu supprimé]. Les URL seuls sont gardés (ce serait mieux si c'est possible).

De manière méga rare il pourrait y avoir encore des personnes qui voudraient supprimer un URL précis, mais ça serait vraiment super peu probable : personne ne va demander à supprimer un seen totalement anonyme, sans texte perso, avec juste un URL vers csstricks, libé.fr, bbc.com, ou autre dans le genre…

brunob commented 7 years ago

Pour ne pas oublier, j'avais repéré ce truc il y a quelques temps : http://websocketd.com/ ref https://seenthis.net/messages/524552

rastapopougros commented 7 years ago

Ça pourrait mais comme on l'a évoqué plus haut, je ne sais pas s'il y a besoin d'interface pour voir quand on supprime. À priori changer le statut pour faire drapeau, ça permet de détecter qui, et ensuite un programme sur le serveur passe une ou deux fois par jour pour supprimer ou anonymiser les choses des gens ayant ce statut, puis supprimer le compte utilisateur quand c'est fini.

brunob commented 7 years ago

pour voir quand on supprime

Précision nécessaire ? Je référence l'outil en question car il permettrait d'accéder au script CLI de suppression de compte depuis l'interface web, rien de plus :)

rastapopougros commented 7 years ago

Tu veux dire pour le lancer immédiatement sans mettre de drapeau et attendre qu'il passe par un cron donc ? Dès qu'on appuie sur le bouton, paf ça lance la suppression ou l'anonymisation ?

brunob commented 7 years ago

Non, ce genre d'action nécessite bien sûr le déclenchement d'au moins une alerte js pour demander la confirmation. Ensuite, on peut le faire en deux temps en utilisant les commandes natives de seenthis-cli : désactiver, attendre un délai, puis supprimer.

brunob commented 5 years ago

Autre piste, du PHP en asyncrhone cf https://seenthis.net/messages/782351 avec amphp par exemple : https://github.com/amphp/mysql

rastapopougros commented 5 years ago

Je remets le détail de ce que j'aimerais permettre dans l'interface, avec à chaque fois un label court, et une phrase d'explication détaillée à rédiger.

(Peut-être même que le dernier pourrait ne pas exister : que le max qu'on puisse faire c'est supprimer tout son compte oui mais que dès lors que des liens ont été étoilés par d'autres, ça ça reste toujours.)

Une fois que la personne a fait son choix, ça met un drapeau, et ensuite un script passe régulièrement sur le serveur pour faire le travail de nettoyage qui peut être long lorsque ce sont des choses fines comme supprimer que les textes persos, etc. Mais on s'en fiche ça sera fait en arrière plan uniquement, donc pas de problème technique particulier.

brunob commented 5 years ago

Comme je le disais sur IRC :

< b_b‎ >  grosso merdo on devrait lancer la requete des liens morts toutes les 24h en cron
< b_b‎ >  et ajouter à la file des paquet de 10 ou X liens à supprimer
< b_b‎ >  ça se ferait tout seul

La requête en question est celle qui supprime les liens morts, cf https://github.com/seenthis/seenthis-cli/blob/master/supprimer_auteur.php#L102

brunob commented 2 years ago

Pour référence https://github.com/mattkingshott/waterfall#how-does-it-work

rastapopougros commented 2 years ago

Ça voudrait dire quoi "soft delete" dans notre contexte ? On met le compte id_auteur en statut "poubelle" chez nous ? (ou autre statut dédié ?) Et pendant ce temps on supprime ou migre (suivant l'option "léguer" choisi plus haut) ses centaines/milliers de contenus, et quand c'est fini on supprime vraiment sa ligne SQL.

brunob commented 2 years ago

C'est exactement ça :)