Suivi — Commentaires Commentaire d'un compte supprimé non éditable par un admin

#1936 Posté par  (site Web personnel) . État de l’entrée : ouverte. Licence CC By‑SA.
Étiquettes : aucune
1
14
juin
2020

Dans app/models/comment.rb

  def wikify_body
    nofollow = user.account.karma < 50
    self.body = wikify(wiki_body, nofollow: nofollow)
  end

du coup toute édition (y compris par un admin) d'un commentaire appartenant à un compte supprimé (entrée dans accounts supprimée mais entrée encore présente dans users) échoue :

Completed 500 Internal Server Error in 16ms (ActiveRecord: 1.7ms)
NoMethodError (undefined method `karma' for nil:NilClass):
app/models/comment.rb:42:in `wikify_body'
app/controllers/comments_controller.rb:64:in `update'

A priori s'il n'y a plus de compte OU si le compte existe avec un karma < 50, on peut place un nofollow.

  • # Comment supprimer l'account ?

    Posté par  (site Web personnel) . Évalué à 2 (+0/-0).

    Hello,

    J'ai essayé de reproduire sur ma machine, mais je n'ai pas trouver comment on peut supprimer un account.

    Je n'ai rien trouvé pour supprimer un compte dans /admin/comptes, comment dois-je le faire ?

    • [^] # Re: Comment supprimer l'account ?

      Posté par  (site Web personnel) . Évalué à 4 (+1/-0). Dernière modification le 17/06/20 à 13:30.

      Il n'y a pas (encore) d'interface pour ça. Actuellement c'est une manipulation en base de données (avec les inconvénients que ça comporte). Cf https://linuxfr.org/suivi/nettoyage-des-22-ans d'ailleurs.

      Un compte actif normal existe dans les tables accounts et users.
      Un compte fermé existe toujours dans les tables accounts et users.
      Un compte nettoyé de ses données personnelles peut n'exister que dans users (on ne sait plus qui est johnkevin_the_rebelz_42, mais on sait qu'il/elle a écrit 42 commentaires et un journal par exemple).
      Un compte anonymisé/purgé n'existe plus ni dans accounts ni dans users.

      • [^] # Re: Comment supprimer l'account ?

        Posté par  (site Web personnel) . Évalué à 2 (+0/-0). Dernière modification le 19/06/20 à 22:39.

        Mmhh, ok, j'ai essayé de le faire à la main et ça fait déjà pas mal de requêtes SQL pour un compte qui n'a crée qu'un seul commentaire.

        Vous faites ça à la main pour ~30% des comptes crées ? Ça doit être assez lourd…

        Est-ce que si je voulais vous proposer un bouton pour faire ça, il devrait être accessible uniquement aux administrateurs dans la page /admin/comptes ?

        • [^] # Re: Comment supprimer l'account ?

          Posté par  (site Web personnel) . Évalué à 4 (+1/-0).

          Non les 30% sont juste fermés (et garder leurs données perso nous aide à identifier les spammeurs)

          Mais il y a les demandes de purge de compte ('je veux disparaître des moteurs de recherche', 'je travaille désormais à la FSF et je ne veux pas que soit découvert que je travaillais avec vim dans ma jeunesse', etc.) qui sont traitées manuellement, car relativement rares. Plus les opérations planifiées éventuelles comme le nettoyage des 22 ans.

          À terme, j'aimerai virer
          - ce qui n'est pas affiché et qui a plus de x années (en gros combien de temps on garde les infos pour reconnaître les spammeurs et autres pénibles, et les potentielles contraintes légales)
          - virer les comptes fermés sans contenus/commentaires/étiquettes ayant plus de x années (en supposant qu'on ne les rouvrira jamais ou qu'il est aussi facile d'ouvrir un nouveau compte)
          - fermer les comptes non utilisés depuis x années sans contenus/commentaires/étiquettes (pour les faire entrer dans le point précédent)
          - au minimum sortir ça de la base active, même si on veut garder une sauvegarde sur disque au cas où…

          (Potentiellement avec x == 1)

        • [^] # Re: Comment supprimer l'account ?

          Posté par  (site Web personnel) . Évalué à 4 (+1/-0). Dernière modification le 20/06/20 à 18:56.

          ça fait déjà pas mal de requêtes SQL pour un compte qui n'a crée qu'un seul commentaire.

          Oui, et pour préciser :

          • les requêtes SQL pour supprimer (virer une entrée dans comments ou nodes ou users)
          • les requêtes SQL pour corriger les dénormalisations (par exemple corriger nodes.comments_count ou diaries.owner_id ou dans friendly_id_slugs ou tags.taggings_count)
          • les requêtes Redis pour nettoyer (par exemple comments/<comment_id>/votes/<vote> ou boards/chans/news/<news_id> ou users/<user_id>/diff_karma)

          (les scripts de vérification pour MariaDB et Redis servent aussi à traquer un éventuel oubli)

  • # Correction proposée sur github

    Posté par  (site Web personnel) . Évalué à 2 (+0/-0).

    Hello,

    J'ai préparé la correction et envoyé sur Github.

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.