Ссылка на null в PostGuardian в can_delete_post

PostGuardian.can_delete_post содержит обращение к user, которое приводит к сбою при вызове, когда пользователь не авторизован. Поскольку это вызывается из плагина, возможно, в ядре сейчас такого не происходит.

Это происходит здесь:

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

Предлагается либо использовать безопасный оператор навигации &., либо изменить код на return true if user && user.in_any_groups? ...

3 лайка

Не могли бы вы использовать @system как пользователя для этого, поскольку у него всегда должны быть права? (Кстати, core тоже так делает?)

Я не уверен, что вы понимаете.

Проблема не в том, что нет пользователя (и «отсутствие пользователя» должно означать «отсутствие прав»). Проблема в том, что код предполагает наличие пользователя без проверки, поэтому он пытается проверить, входит ли «ничто» в какие-либо группы.

1 лайк