From 276b85bc91138ec3364b6dcddd45d16da6569a19 Mon Sep 17 00:00:00 2001
From: Eugen Rochko <eugen@zeonfederated.com>
Date: Sun, 30 Oct 2022 02:43:57 +0200
Subject: [PATCH] Fix admin APIs returning deleted object instead of empty
 object upon delete (#19479)

Fix #19153
---
 app/controllers/api/v1/admin/accounts_controller.rb       | 5 ++---
 .../api/v1/admin/canonical_email_blocks_controller.rb     | 6 +-----
 app/controllers/api/v1/admin/domain_allows_controller.rb  | 2 +-
 app/controllers/api/v1/admin/domain_blocks_controller.rb  | 3 +--
 .../api/v1/admin/email_domain_blocks_controller.rb        | 4 +---
 app/controllers/api/v1/admin/ip_blocks_controller.rb      | 8 +-------
 6 files changed, 7 insertions(+), 21 deletions(-)

diff --git a/app/controllers/api/v1/admin/accounts_controller.rb b/app/controllers/api/v1/admin/accounts_controller.rb
index 0dee02e94..ae7f7d076 100644
--- a/app/controllers/api/v1/admin/accounts_controller.rb
+++ b/app/controllers/api/v1/admin/accounts_controller.rb
@@ -60,14 +60,13 @@ class Api::V1::Admin::AccountsController < Api::BaseController
   def reject
     authorize @account.user, :reject?
     DeleteAccountService.new.call(@account, reserve_email: false, reserve_username: false)
-    render json: @account, serializer: REST::Admin::AccountSerializer
+    render_empty
   end
 
   def destroy
     authorize @account, :destroy?
-    json = render_to_body json: @account, serializer: REST::Admin::AccountSerializer
     Admin::AccountDeletionWorker.perform_async(@account.id)
-    render json: json
+    render_empty
   end
 
   def unsensitive
diff --git a/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb b/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb
index bf8a6a131..9ef1b3be7 100644
--- a/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb
+++ b/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb
@@ -35,20 +35,16 @@ class Api::V1::Admin::CanonicalEmailBlocksController < Api::BaseController
 
   def create
     authorize :canonical_email_block, :create?
-
     @canonical_email_block = CanonicalEmailBlock.create!(resource_params)
     log_action :create, @canonical_email_block
-
     render json: @canonical_email_block, serializer: REST::Admin::CanonicalEmailBlockSerializer
   end
 
   def destroy
     authorize @canonical_email_block, :destroy?
-
     @canonical_email_block.destroy!
     log_action :destroy, @canonical_email_block
-
-    render json: @canonical_email_block, serializer: REST::Admin::CanonicalEmailBlockSerializer
+    render_empty
   end
 
   private
diff --git a/app/controllers/api/v1/admin/domain_allows_controller.rb b/app/controllers/api/v1/admin/domain_allows_controller.rb
index 59aa807d6..0658199f0 100644
--- a/app/controllers/api/v1/admin/domain_allows_controller.rb
+++ b/app/controllers/api/v1/admin/domain_allows_controller.rb
@@ -43,7 +43,7 @@ class Api::V1::Admin::DomainAllowsController < Api::BaseController
     authorize @domain_allow, :destroy?
     UnallowDomainService.new.call(@domain_allow)
     log_action :destroy, @domain_allow
-    render json: @domain_allow, serializer: REST::Admin::DomainAllowSerializer
+    render_empty
   end
 
   private
diff --git a/app/controllers/api/v1/admin/domain_blocks_controller.rb b/app/controllers/api/v1/admin/domain_blocks_controller.rb
index de8fd9d08..df5b1b3fc 100644
--- a/app/controllers/api/v1/admin/domain_blocks_controller.rb
+++ b/app/controllers/api/v1/admin/domain_blocks_controller.rb
@@ -40,7 +40,6 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController
 
   def update
     authorize @domain_block, :update?
-
     @domain_block.update(domain_block_params)
     severity_changed = @domain_block.severity_changed?
     @domain_block.save!
@@ -53,7 +52,7 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController
     authorize @domain_block, :destroy?
     UnblockDomainService.new.call(@domain_block)
     log_action :destroy, @domain_block
-    render json: @domain_block, serializer: REST::Admin::DomainBlockSerializer
+    render_empty
   end
 
   private
diff --git a/app/controllers/api/v1/admin/email_domain_blocks_controller.rb b/app/controllers/api/v1/admin/email_domain_blocks_controller.rb
index ac16f70b0..e53d0b157 100644
--- a/app/controllers/api/v1/admin/email_domain_blocks_controller.rb
+++ b/app/controllers/api/v1/admin/email_domain_blocks_controller.rb
@@ -39,11 +39,9 @@ class Api::V1::Admin::EmailDomainBlocksController < Api::BaseController
 
   def destroy
     authorize @email_domain_block, :destroy?
-
     @email_domain_block.destroy!
     log_action :destroy, @email_domain_block
-
-    render json: @email_domain_block, serializer: REST::Admin::EmailDomainBlockSerializer
+    render_empty
   end
 
   private
diff --git a/app/controllers/api/v1/admin/ip_blocks_controller.rb b/app/controllers/api/v1/admin/ip_blocks_controller.rb
index f13d63267..201ab6b1f 100644
--- a/app/controllers/api/v1/admin/ip_blocks_controller.rb
+++ b/app/controllers/api/v1/admin/ip_blocks_controller.rb
@@ -20,10 +20,8 @@ class Api::V1::Admin::IpBlocksController < Api::BaseController
 
   def create
     authorize :ip_block, :create?
-
     @ip_block = IpBlock.create!(resource_params)
     log_action :create, @ip_block
-
     render json: @ip_block, serializer: REST::Admin::IpBlockSerializer
   end
 
@@ -39,20 +37,16 @@ class Api::V1::Admin::IpBlocksController < Api::BaseController
 
   def update
     authorize @ip_block, :update?
-
     @ip_block.update(resource_params)
     log_action :update, @ip_block
-
     render json: @ip_block, serializer: REST::Admin::IpBlockSerializer
   end
 
   def destroy
     authorize @ip_block, :destroy?
-
     @ip_block.destroy!
     log_action :destroy, @ip_block
-
-    render json: @ip_block, serializer: REST::Admin::IpBlockSerializer
+    render_empty
   end
 
   private