diff --git a/app/controllers/chat_controller.rb b/app/controllers/chat_controller.rb index 63bbeea85..9b47fa918 100644 --- a/app/controllers/chat_controller.rb +++ b/app/controllers/chat_controller.rb @@ -231,7 +231,7 @@ def restore end def rebake - guardian.ensure_can_rebake!(@message) + guardian.ensure_can_rebake_chat_message!(@message) @message.rebake!(invalidate_oneboxes: true) render json: success_json end diff --git a/lib/guardian_extensions.rb b/lib/guardian_extensions.rb index 753e083f0..817f19082 100644 --- a/lib/guardian_extensions.rb +++ b/lib/guardian_extensions.rb @@ -68,7 +68,7 @@ def can_move_chat_to_topic?(chat_channel) is_staff? && can_modify_channel_message?(chat_channel) end - def can_rebake?(message) + def can_rebake_chat_message?(message) return false if !can_modify_channel_message?(message.chat_channel) is_staff? || @user.has_trust_level?(TrustLevel[4]) end diff --git a/spec/requests/chat_controller_spec.rb b/spec/requests/chat_controller_spec.rb index b174a20b5..e077a2cb0 100644 --- a/spec/requests/chat_controller_spec.rb +++ b/spec/requests/chat_controller_spec.rb @@ -370,6 +370,15 @@ end end + it "does not interfere with core's guardian can_rebake? for posts" do + sign_in(Fabricate(:admin)) + put "/chat/#{chat_channel.id}/#{chat_message.id}/rebake.json" + expect(response.status).to eq(200) + post = Fabricate(:post) + put "/posts/#{post.id}/rebake.json" + expect(response.status).to eq(200) + end + it "does not rebake the post when channel is read_only" do chat_message.chat_channel.update!(status: :read_only) sign_in(Fabricate(:admin))