您好,我允许用户在频道中聊天,但在私信中禁用他们。在这种情况下,非员工用户仍然可以在其他用户的用户卡片中看到“聊天”按钮。但点击后他们可能会收到错误消息。
我阅读了代码,如果 can_chat_user 为真,则显示该按钮。这是由以下代码确定的。
# plugins/chat/plugin.rb
add_to_serializer(:user_card, :can_chat_user) do
return false if !SiteSetting.chat_enabled
return false if scope.user.blank?
scope.user.id != object.id && scope.can_chat?(scope.user) && scope.can_chat?(object)
end
和
# plugins/chat/lib/guardian_extentions.rb
def can_chat?(user)
return false unless user
user.staff? || user.in_any_groups?(Chat.allowed_group_ids)
end