summaryrefslogtreecommitdiff
path: root/app/services/web_hooks/admin_destroy_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/web_hooks/admin_destroy_service.rb')
-rw-r--r--app/services/web_hooks/admin_destroy_service.rb20
1 files changed, 20 insertions, 0 deletions
diff --git a/app/services/web_hooks/admin_destroy_service.rb b/app/services/web_hooks/admin_destroy_service.rb
new file mode 100644
index 00000000000..e9835801a39
--- /dev/null
+++ b/app/services/web_hooks/admin_destroy_service.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+module WebHooks
+ # A variant of the destroy service that can only be used by an administrator
+ # from a rake task.
+ class AdminDestroyService < WebHooks::DestroyService
+ def initialize(rake_task:)
+ super(nil)
+ @rake_task = rake_task
+ end
+
+ def authorized?(web_hook)
+ @rake_task.present? # Not impossible to circumvent, but you need to provide something
+ end
+
+ def log_message(hook)
+ "An administrator scheduled a deletion of logs for hook ID #{hook.id} from #{@rake_task.name}"
+ end
+ end
+end