Déréférencement nul dans PostGuardian can_delete_post

PostGuardian.can_delete_post contient un déréférencement de user qui plante lorsqu’il est appelé alors qu’aucun utilisateur n’est connecté. Il est appelé à partir d’un plugin, donc peut-être que cela n’arrive pas dans le cœur de l’application pour le moment.

Cela se produit ici :

return true if user.in_any_groups?(SiteSetting.delete_all_posts_and_topics_allowed_groups_map)

La suggestion est soit d’utiliser l’opérateur de navigation sécurisée &. soit de le changer en return true if user && user.in_any_groups? ...

3 « J'aime »

Pourriez-vous éventuellement utiliser @system comme utilisateur pour cela, puisqu’il devrait toujours avoir les autorisations ? (De plus, le noyau ne fait-il pas de même ?)

Je ne pense pas que vous ayez compris.

Le fait qu’il n’y ait pas d’utilisateur (et que « pas d’utilisateur » devrait être égal à « pas de permissions ») n’est pas le problème. Le problème est que le code suppose qu’il y a un utilisateur sans vérifier, il essaie donc de voir si « rien » se trouve dans des groupes.

1 « J'aime »