Referência nula em PostGuardian can_delete_post

PostGuardian.can_delete_post contém uma desreferência de user que falha quando chamada sem um usuário logado. Está sendo chamada de um plugin, então talvez isso não aconteça no core no momento.

Está acontecendo aqui:

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

A sugestão é usar o operador de navegação segura &. ou alterá-lo para return true if user && user.in_any_groups? ...

3 curtidas

Você poderia talvez usar @system como usuário para isso, já que ele sempre deve ter permissões? (Além disso, o core não faz isso também?)

Não tenho certeza se você entendeu.

Não é um problema que não haja usuário (e “nenhum usuário” deveria ser igual a “nenhuma permissão”). O problema é que o código assume que há um usuário sem verificar, então ele tenta ver se “nada” está em nenhum grupo.

1 curtida