diff --git a/app/controllers/topics_controller.rb b/app/controllers/topics_controller.rb index e5989bc1396..b8931c4dd9b 100644 --- a/app/controllers/topics_controller.rb +++ b/app/controllers/topics_controller.rb @@ -557,6 +557,8 @@ class TopicsController < ApplicationController PostDestroyer.new(current_user, first_post, context: params[:context]).destroy render body: nil + rescue Discourse::InvalidAccess + render_json_error I18n.t("delete_topic_failed") end def recover diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 8ad06adf43c..45e61b0c492 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -266,6 +266,7 @@ en: request_membership: "Request Membership" join_group: "Join Group" deleted_topic: "Oops! This topic has been deleted and is no longer available." + delete_topic_failed: "There was an error deleting that topic. Please contact the site's administrator." reading_time: "Reading time" likes: "Likes" diff --git a/spec/requests/topics_controller_spec.rb b/spec/requests/topics_controller_spec.rb index 719a67537ba..4900b0555d2 100644 --- a/spec/requests/topics_controller_spec.rb +++ b/spec/requests/topics_controller_spec.rb @@ -860,7 +860,7 @@ RSpec.describe TopicsController do it "raises an exception when the user doesn't have permission to delete the topic" do sign_in(user) delete "/t/#{topic.id}.json" - expect(response).to be_forbidden + expect(response.status).to eq(422) end end