안녕하세요, 저는 채널에서 채팅을 허용하되 개인 메시지에서는 채팅을 비활성화했습니다. 이 경우, 스태프가 아닌 사용자는 다른 사용자의 사용자 카드에서 여전히 채팅 버튼을 볼 수 있습니다. 하지만 버튼을 클릭하면 잘못된 메시지를 받을 수 있습니다.
코드를 읽어보니, 버튼은 can_chat_user가 true일 때 표시됩니다. 이는 다음 코드에 의해 결정됩니다.
# 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