diff --git a/plugins/chat/lib/guardian_extensions.rb b/plugins/chat/lib/guardian_extensions.rb index cc04ac8629f..c69b1d66328 100644 --- a/plugins/chat/lib/guardian_extensions.rb +++ b/plugins/chat/lib/guardian_extensions.rb @@ -95,6 +95,7 @@ module Chat::GuardianExtensions def can_flag_chat_messages? return false if @user.silenced? + return true if @user.staff? @user.in_any_groups?(SiteSetting.chat_message_flag_allowed_groups_map) end diff --git a/plugins/chat/spec/lib/guardian_extensions_spec.rb b/plugins/chat/spec/lib/guardian_extensions_spec.rb index e0d7bfa2de0..73767fc2151 100644 --- a/plugins/chat/spec/lib/guardian_extensions_spec.rb +++ b/plugins/chat/spec/lib/guardian_extensions_spec.rb @@ -143,6 +143,23 @@ RSpec.describe Chat::GuardianExtensions do end end + describe "#can_flag_chat_message?" do + let!(:message) { Fabricate(:chat_message, chat_channel: channel) } + before { SiteSetting.chat_message_flag_allowed_groups = "" } + + context "when user isn't staff" do + it "returns false" do + expect(guardian.can_flag_chat_message?(message)).to eq(false) + end + end + + context "when user is staff" do + it "returns true" do + expect(staff_guardian.can_flag_chat_message?(message)).to eq(true) + end + end + end + describe "#can_moderate_chat?" do context "for category channel" do fab!(:category) { Fabricate(:category, read_restricted: true) }