Nil dereference in PostGuardian can_delete_post

PostGuardian.can_delete_post contiene un riferimento a user che va in crash quando viene chiamato senza un utente connesso. Viene chiamato da un plugin, quindi forse al momento questo non accade nel core.

Sta succedendo qui:

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

Il suggerimento è di utilizzare l’operatore di navigazione sicura &. o di cambiarlo in return true if user && user.in_any_groups? ...

3 Mi Piace

Potresti forse usare @system come utente per questo, dato che dovrebbe avere sempre i permessi? (Inoltre, anche il core fa così?)

Non sono sicuro che tu capisca.

Non è un problema che non ci sia un utente (e “nessun utente” dovrebbe equivalere a “nessun permesso”). Il problema è che il codice presuppone che ci sia un utente senza controllare, quindi tenta di vedere se “nulla” è in qualche gruppo.

1 Mi Piace