J’aimerais beaucoup qu’il y ait une option pour réellement supprimer un message ou un sujet, sans qu’on me le bloque à chaque étape. Cela rend les choses plus difficiles.
Il devrait y avoir une simple case à cocher pour indiquer que je suis conscient des conséquences et que je veux le faire quand même. On ne devrait pas me forcer à supprimer manuellement chaque message dans des sujets très longs.
Ou bien, comme sur Reddit, je devrais pouvoir supprimer définitivement le premier message et le laisser vide.
Je comprends que beaucoup diront quelque chose comme « mais les réponses peuvent être importantes pour les autres / pour la postérité ». Je ne peux pas assez insister sur le fait que cela n’a aucune importance et que nous nous moquons que toutes les réponses soient supprimées.
Et on ne devrait pas avoir à faire ça pour chaque message individuellement.
Je pense que cela pourrait fonctionner très bien en tant que paramètre de site de type énumération, le comportement actuel restant par défaut. Par exemple, permanent_topic_deletion_mode pourrait proposer le comportement actuel « exiger que chaque message soit d’abord supprimé définitivement » ainsi qu’un comportement facultatif « supprimer définitivement le sujet et tous les messages », toujours protégé par la confirmation saisie existante. Cela permettrait de préserver la politique de sécurité actuelle pour les sites existants tout en permettant aux administrateurs qui souhaitent explicitement une suppression en masse d’opter pour cette option.
Une mise à jour rapide sur l’avancement après avoir creusé dans le code existant de suppression définitive :
J’ai constaté que Discourse dispose déjà du comportement de suppression en masse nécessaire ici. Lorsque le premier message est définitivement détruit, PostDestroyer peut déjà détruire de manière récursive et définitive les messages restants du sujet. La restriction réside principalement dans les vérifications de permissions/politiques, qui exigent actuellement que les autres messages soient d’abord supprimés définitivement.
J’ai donc abandonné l’énumération à l’échelle du site que je proposais ci-dessus et ai mis en place une implémentation fonctionnelle utilisant un modèle d’opt-in plus conservateur :
le paramètre existant can_permanently_delete reste l’interrupteur principal
il existe une porte d’accès supplémentaire au niveau opérateur, cachée et désactivée par défaut
lorsque les deux sont activés, chaque administrateur peut individuellement s’abonner sous Préférences → Interface
le fait qu’un administrateur s’abonne ne modifie pas le comportement pour les autres administrateurs
la désactivation de la porte d’accès cachée restaure immédiatement le comportement existant à l’échelle globale
la confirmation de suppression définitive existante et les autres mesures de sécurité restent en place
La préférence est actuellement étiquetée :
Autoriser la suppression définitive du sujet à supprimer tous les messages
avec l’explication :
Lors de la suppression définitive d’un sujet, supprimer également définitivement tous les messages restants au lieu d’exiger qu’ils soient supprimés définitivement un par un.
J’ai ajouté des tests de politique/sécurité côté serveur, une couverture du contrôleur confirmant que le sujet et tous les messages restants sont effectivement supprimés définitivement, une couverture du sérialiseur/API, et des tests d’acceptation front-end pour la visibilité et l’enregistrement de la préférence. Ceux-ci passent.
Je regarde également comment enregistrer les modifications de cet opt-in par administrateur dans les journaux d’actions du personnel, car l’activation d’un mode de suppression plus destructeur semble mériter d’être un événement d’audit horodaté.
Je posterai la PR GitHub une fois que j’aurai terminé cela et la revue finale.
Un dernier point : l’implémentation est désormais en ligne sous forme d’une PR prête à être examinée :
La conception finale adopte l’approche d’opt-in par administrateur décrite plus haut, plutôt que l’enum au niveau du site que je proposais initialement.
Quelques détails d’UX ont été ajoutés lors de la dernière passe :
la préférence par administrateur est affichée sous Préférences → Interface lorsque les contrôles au niveau du site le permettent
lorsqu’un administrateur ayant opté in supprime définitivement le premier message/sujet, la confirmation irréversible indique désormais explicitement que cela supprimera définitivement le sujet et toutes les réponses
lorsque l’administrateur n’a pas opté in, le comportement et les libellés existants restent inchangés
le délai de refroidissement existant pour la suppression définitive par le même administrateur est toujours appliqué
les modifications de préférence sont consignées dans les journaux d’actions du personnel (Staff Action Logs)
J’ai également testé manuellement le parcours complet avec opt-in sur un sujet jetable avec deux réponses, et j’ai vérifié par la suite que le sujet et tous ses messages avaient été supprimés de la base de données.
Les principales vérifications de test/lint de GitHub sont passées ; la PR est désormais en attente d’examen, le scan de sécurité étant toujours en file d’attente au moment de la rédaction.