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 作为用户,因为它应该始终拥有权限?(另外,核心不也是这样做的吗?)

我不确定你是否理解。

没有用户不是问题(并且“没有用户”应该等于“没有权限”)。问题在于代码假定存在用户而没有进行检查,因此它会尝试查看“空”是否属于任何组。

1 个赞