Files
gitlab-ce/app/models/hooks/system_hook.rb
2025-04-09 18:13:01 +00:00

50 lines
1.1 KiB
Ruby

# frozen_string_literal: true
class SystemHook < WebHook
extend ::Gitlab::Utils::Override
include TriggerableHooks
AVAILABLE_HOOKS = [
:repository_update_hooks,
:push_hooks,
:tag_push_hooks,
:merge_request_hooks
].freeze
self.allow_legacy_sti_class = true
has_many :web_hook_logs, foreign_key: 'web_hook_id', inverse_of: :web_hook
def self.available_hooks
AVAILABLE_HOOKS
end
triggerable_hooks available_hooks
attribute :push_events, default: false
attribute :repository_update_events, default: true
attribute :merge_requests_events, default: false
validates :url, system_hook_url: true, unless: ->(hook) { hook.url_variables? }
# Allow urls pointing localhost and the local network
def allow_local_requests?
Gitlab::CurrentSettings.allow_local_requests_from_system_hooks?
end
def pluralized_name
s_('Webhooks|System hooks')
end
def help_path
Gitlab::Routing.url_helpers.help_page_path('administration/system_hooks.md')
end
override :validate_public_url?
def validate_public_url?
false
end
end
SystemHook.prepend_mod_with('SystemHook')