From bd5c9f0d52de8aa3c96fe2d1c65a4976127bd69f Mon Sep 17 00:00:00 2001 From: bmarjanovic Date: Wed, 17 Jan 2024 10:21:08 +0100 Subject: [PATCH 1/3] Add name and description for WebHooks Changelog: added --- app/controllers/admin/hooks_controller.rb | 2 +- .../concerns/web_hooks/hook_actions.rb | 2 +- app/views/admin/hooks/_form.html.haml | 6 ++++++ app/views/shared/web_hooks/_form.html.haml | 6 ++++++ app/views/shared/web_hooks/_hook.html.haml | 3 ++- ...955_add_name_and_description_to_web_hooks.rb | 13 +++++++++++++ ...01_add_text_limit_to_web_hooks_attributes.rb | 17 +++++++++++++++++ db/schema_migrations/20240116161955 | 1 + db/schema_migrations/20240116162201 | 1 + db/structure.sql | 6 +++++- locale/gitlab.pot | 6 ++++++ 11 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 db/migrate/20240116161955_add_name_and_description_to_web_hooks.rb create mode 100644 db/migrate/20240116162201_add_text_limit_to_web_hooks_attributes.rb create mode 100644 db/schema_migrations/20240116161955 create mode 100644 db/schema_migrations/20240116162201 diff --git a/app/controllers/admin/hooks_controller.rb b/app/controllers/admin/hooks_controller.rb index c6c0e7eac901e7..589dd9b324d200 100644 --- a/app/controllers/admin/hooks_controller.rb +++ b/app/controllers/admin/hooks_controller.rb @@ -24,7 +24,7 @@ def hook end def hook_param_names - %i[enable_ssl_verification token url] + %i[enable_ssl_verification name description token url] end def trigger_values diff --git a/app/controllers/concerns/web_hooks/hook_actions.rb b/app/controllers/concerns/web_hooks/hook_actions.rb index 076347922c8173..5aeb10dfb878be 100644 --- a/app/controllers/concerns/web_hooks/hook_actions.rb +++ b/app/controllers/concerns/web_hooks/hook_actions.rb @@ -71,7 +71,7 @@ def hook_params end def hook_param_names - %i[enable_ssl_verification token url push_events_branch_filter branch_filter_strategy] + %i[enable_ssl_verification name description token url push_events_branch_filter branch_filter_strategy] end def destroy_hook(hook) diff --git a/app/views/admin/hooks/_form.html.haml b/app/views/admin/hooks/_form.html.haml index 92a664e1ca80ba..15c54b0471cb51 100644 --- a/app/views/admin/hooks/_form.html.haml +++ b/app/views/admin/hooks/_form.html.haml @@ -4,6 +4,12 @@ = form.label :url, _('URL'), class: 'label-bold' = form.text_field :url, class: 'form-control gl-form-input' %p.form-text.text-muted= _('URL must be percent-encoded if necessary.') +.form-group + = form.label :name, s_('Webhooks|Name'), class: 'label-bold' + = form.text_field :name, value: hook.name, class: 'form-control gl-form-input gl-form-input-xl' +.form-group + = form.label :description, s_('Webhooks|Description'), class: 'label-bold' + = form.text_area :description, value: hook.description, class: 'form-control gl-form-input gl-form-input-xl', rows: 4, maxlength: 2048 .form-group = form.label :token, _('Secret token'), class: 'label-bold' = form.password_field :token, value: hook.masked_token, autocomplete: 'new-password', class: 'form-control gl-form-input gl-max-w-48' diff --git a/app/views/shared/web_hooks/_form.html.haml b/app/views/shared/web_hooks/_form.html.haml index a3dfc6eb0420cd..efd9cff5773f45 100644 --- a/app/views/shared/web_hooks/_form.html.haml +++ b/app/views/shared/web_hooks/_form.html.haml @@ -1,6 +1,12 @@ = form_errors(hook) .js-vue-webhook-form{ data: webhook_form_data(hook) } +.form-group + = form.label :name, s_('Webhooks|Name'), class: 'label-bold' + = form.text_field :name, value: hook.name, class: 'form-control gl-form-input gl-form-input-xl' +.form-group + = form.label :description, s_('Webhooks|Description'), class: 'label-bold' + = form.text_area :description, value: hook.description, class: 'form-control gl-form-input gl-form-input-xl', rows: 4, maxlength: 2048 .form-group = form.label :token, s_('Webhooks|Secret token'), class: 'label-bold' = form.password_field :token, value: hook.masked_token, autocomplete: 'new-password', class: 'form-control gl-form-input gl-form-input-xl' diff --git a/app/views/shared/web_hooks/_hook.html.haml b/app/views/shared/web_hooks/_hook.html.haml index a332fd9cce7c66..23a266356e286f 100644 --- a/app/views/shared/web_hooks/_hook.html.haml +++ b/app/views/shared/web_hooks/_hook.html.haml @@ -5,7 +5,8 @@ .gl-display-flex.lgl-align-items-center.row.gl-mx-0 .col-md-8.col-lg-7.gl-px-5 .light-header.gl-mb-2 - = hook.url + = hook.name + = gl_badge_tag(hook.url, variant: :danger, size: :sm) - if hook.rate_limited? = gl_badge_tag(_('Disabled'), variant: :danger, size: :sm) - elsif hook.permanently_disabled? diff --git a/db/migrate/20240116161955_add_name_and_description_to_web_hooks.rb b/db/migrate/20240116161955_add_name_and_description_to_web_hooks.rb new file mode 100644 index 00000000000000..83b8bdf16a3453 --- /dev/null +++ b/db/migrate/20240116161955_add_name_and_description_to_web_hooks.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class AddNameAndDescriptionToWebHooks < Gitlab::Database::Migration[2.2] + milestone '16.8' + + # rubocop:disable Migration/AddLimitToTextColumns -- limit is added in + # db/migrate/20240116162201_add_text_limit_to_web_hooks_attributes.rb + def change + add_column :web_hooks, :name, :text + add_column :web_hooks, :description, :text + end + # rubocop:enable Migration/AddLimitToTextColumns +end diff --git a/db/migrate/20240116162201_add_text_limit_to_web_hooks_attributes.rb b/db/migrate/20240116162201_add_text_limit_to_web_hooks_attributes.rb new file mode 100644 index 00000000000000..dc0c20321dfa0c --- /dev/null +++ b/db/migrate/20240116162201_add_text_limit_to_web_hooks_attributes.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddTextLimitToWebHooksAttributes < Gitlab::Database::Migration[2.2] + milestone '16.8' + + disable_ddl_transaction! + + def up + add_text_limit :web_hooks, :name, 255 + add_text_limit :web_hooks, :description, 2048 + end + + def down + remove_text_limit :web_hooks, :name + remove_text_limit :web_hooks, :description + end +end diff --git a/db/schema_migrations/20240116161955 b/db/schema_migrations/20240116161955 new file mode 100644 index 00000000000000..2158e158e8df91 --- /dev/null +++ b/db/schema_migrations/20240116161955 @@ -0,0 +1 @@ +81b09b45a5c6b7c04cbb9fbd112a3f88f64aa837d0229c66c068d0c66efc8c83 \ No newline at end of file diff --git a/db/schema_migrations/20240116162201 b/db/schema_migrations/20240116162201 new file mode 100644 index 00000000000000..51b1472d01a10f --- /dev/null +++ b/db/schema_migrations/20240116162201 @@ -0,0 +1 @@ +82f6fe5eef8a794bbbd27919800339c03e416f85598f098eb6eb1c54252e62a3 \ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index fd741fc3111704..b3a9a94fb13a10 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -25805,7 +25805,11 @@ CREATE TABLE web_hooks ( encrypted_url_variables_iv bytea, integration_id integer, branch_filter_strategy smallint DEFAULT 0 NOT NULL, - emoji_events boolean DEFAULT false NOT NULL + emoji_events boolean DEFAULT false NOT NULL, + name text, + description text, + CONSTRAINT check_1e4d5cbdc5 CHECK ((char_length(name) <= 255)), + CONSTRAINT check_23a96ad211 CHECK ((char_length(description) <= 2048)) ); CREATE SEQUENCE web_hooks_id_seq diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 608b930f5c9e3d..151745b3e7dd4e 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -55015,6 +55015,9 @@ msgstr "" msgid "Webhooks|Deployment events" msgstr "" +msgid "Webhooks|Description" +msgstr "" + msgid "Webhooks|Do not show sensitive data such as tokens in the UI." msgstr "" @@ -55054,6 +55057,9 @@ msgstr "" msgid "Webhooks|Must match part of URL" msgstr "" +msgid "Webhooks|Name" +msgstr "" + msgid "Webhooks|Pipeline events" msgstr "" -- GitLab From c4dcdc93f5b249ab0dfd18287fdb31d1811c1d15 Mon Sep 17 00:00:00 2001 From: bmarjanovic Date: Thu, 18 Jan 2024 13:23:30 +0100 Subject: [PATCH 2/3] Adds missing description field --- app/views/shared/web_hooks/_hook.html.haml | 11 ++++++++--- ...116161955_add_name_and_description_to_web_hooks.rb | 2 +- ...16162201_add_text_limit_to_web_hooks_attributes.rb | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/views/shared/web_hooks/_hook.html.haml b/app/views/shared/web_hooks/_hook.html.haml index 23a266356e286f..1f6ad4df3f0c98 100644 --- a/app/views/shared/web_hooks/_hook.html.haml +++ b/app/views/shared/web_hooks/_hook.html.haml @@ -3,10 +3,12 @@ %li.gl-border-b.gl-last-of-type-border-b-0 .gl-display-flex.lgl-align-items-center.row.gl-mx-0 - .col-md-8.col-lg-7.gl-px-5 + .col-md-8.col-lg-5.gl-px-5 .light-header.gl-mb-2 = hook.name - = gl_badge_tag(hook.url, variant: :danger, size: :sm) + .description.gl-font-sm + = hook.url + - if hook.rate_limited? = gl_badge_tag(_('Disabled'), variant: :danger, size: :sm) - elsif hook.permanently_disabled? @@ -20,7 +22,10 @@ = gl_badge_tag(integration_webhook_event_human_name(trigger), size: :sm) = gl_badge_tag(sslBadgeText, size: :sm) - .col-md-4.col-lg-5.gl-mt-2.gl-px-5.gl-gap-3.gl-display-flex.gl-md-justify-content-end.gl-align-items-baseline + .col-md-2.col-lg-4.gl-px-5 + = truncate(hook.description, length: 200) + + .col-md-4.col-lg-3.gl-mt-2.gl-px-5.gl-gap-3.gl-display-flex.gl-md-justify-content-end.gl-align-items-baseline = render 'shared/web_hooks/test_button', hook: hook, size: 'small' = render Pajamas::ButtonComponent.new(href: edit_hook_path(hook), size: :small) do = _('Edit') diff --git a/db/migrate/20240116161955_add_name_and_description_to_web_hooks.rb b/db/migrate/20240116161955_add_name_and_description_to_web_hooks.rb index 83b8bdf16a3453..b1360fa4aa2681 100644 --- a/db/migrate/20240116161955_add_name_and_description_to_web_hooks.rb +++ b/db/migrate/20240116161955_add_name_and_description_to_web_hooks.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class AddNameAndDescriptionToWebHooks < Gitlab::Database::Migration[2.2] - milestone '16.8' + milestone '16.9' # rubocop:disable Migration/AddLimitToTextColumns -- limit is added in # db/migrate/20240116162201_add_text_limit_to_web_hooks_attributes.rb diff --git a/db/migrate/20240116162201_add_text_limit_to_web_hooks_attributes.rb b/db/migrate/20240116162201_add_text_limit_to_web_hooks_attributes.rb index dc0c20321dfa0c..3802f1c31f5ff8 100644 --- a/db/migrate/20240116162201_add_text_limit_to_web_hooks_attributes.rb +++ b/db/migrate/20240116162201_add_text_limit_to_web_hooks_attributes.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class AddTextLimitToWebHooksAttributes < Gitlab::Database::Migration[2.2] - milestone '16.8' + milestone '16.9' disable_ddl_transaction! -- GitLab From 02bef35546b03ee68fbdd45b2175a20de2c745d4 Mon Sep 17 00:00:00 2001 From: Justin Ho Tuan Duong Date: Mon, 22 Jan 2024 21:47:54 +0700 Subject: [PATCH 3/3] Update forms copy and UI from review - Remove some unused classes. - Add "optional" text to labels. --- app/views/admin/hooks/_form.html.haml | 4 ++-- app/views/shared/web_hooks/_form.html.haml | 4 ++-- app/views/shared/web_hooks/_hook.html.haml | 8 ++++---- locale/gitlab.pot | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/views/admin/hooks/_form.html.haml b/app/views/admin/hooks/_form.html.haml index 15c54b0471cb51..9f71297c700962 100644 --- a/app/views/admin/hooks/_form.html.haml +++ b/app/views/admin/hooks/_form.html.haml @@ -5,10 +5,10 @@ = form.text_field :url, class: 'form-control gl-form-input' %p.form-text.text-muted= _('URL must be percent-encoded if necessary.') .form-group - = form.label :name, s_('Webhooks|Name'), class: 'label-bold' + = form.label :name, s_('Webhooks|Name (optional)'), class: 'label-bold' = form.text_field :name, value: hook.name, class: 'form-control gl-form-input gl-form-input-xl' .form-group - = form.label :description, s_('Webhooks|Description'), class: 'label-bold' + = form.label :description, s_('Webhooks|Description (optional)'), class: 'label-bold' = form.text_area :description, value: hook.description, class: 'form-control gl-form-input gl-form-input-xl', rows: 4, maxlength: 2048 .form-group = form.label :token, _('Secret token'), class: 'label-bold' diff --git a/app/views/shared/web_hooks/_form.html.haml b/app/views/shared/web_hooks/_form.html.haml index efd9cff5773f45..cdef45a041531f 100644 --- a/app/views/shared/web_hooks/_form.html.haml +++ b/app/views/shared/web_hooks/_form.html.haml @@ -2,10 +2,10 @@ .js-vue-webhook-form{ data: webhook_form_data(hook) } .form-group - = form.label :name, s_('Webhooks|Name'), class: 'label-bold' + = form.label :name, s_('Webhooks|Name (optional)'), class: 'label-bold' = form.text_field :name, value: hook.name, class: 'form-control gl-form-input gl-form-input-xl' .form-group - = form.label :description, s_('Webhooks|Description'), class: 'label-bold' + = form.label :description, s_('Webhooks|Description (optional)'), class: 'label-bold' = form.text_area :description, value: hook.description, class: 'form-control gl-form-input gl-form-input-xl', rows: 4, maxlength: 2048 .form-group = form.label :token, s_('Webhooks|Secret token'), class: 'label-bold' diff --git a/app/views/shared/web_hooks/_hook.html.haml b/app/views/shared/web_hooks/_hook.html.haml index 1f6ad4df3f0c98..6c6ff5f7fc859e 100644 --- a/app/views/shared/web_hooks/_hook.html.haml +++ b/app/views/shared/web_hooks/_hook.html.haml @@ -2,11 +2,11 @@ - sslBadgeText = _('SSL Verification:') + ' ' + sslStatus %li.gl-border-b.gl-last-of-type-border-b-0 - .gl-display-flex.lgl-align-items-center.row.gl-mx-0 + .row.gl-mx-0 .col-md-8.col-lg-5.gl-px-5 - .light-header.gl-mb-2 + .light-header.gl-mb-1 = hook.name - .description.gl-font-sm + .gl-font-sm = hook.url - if hook.rate_limited? @@ -22,7 +22,7 @@ = gl_badge_tag(integration_webhook_event_human_name(trigger), size: :sm) = gl_badge_tag(sslBadgeText, size: :sm) - .col-md-2.col-lg-4.gl-px-5 + .col-md-2.col-lg-4.gl-px-5.gl-font-sm = truncate(hook.description, length: 200) .col-md-4.col-lg-3.gl-mt-2.gl-px-5.gl-gap-3.gl-display-flex.gl-md-justify-content-end.gl-align-items-baseline diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 151745b3e7dd4e..245c56ff8f0244 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -55015,7 +55015,7 @@ msgstr "" msgid "Webhooks|Deployment events" msgstr "" -msgid "Webhooks|Description" +msgid "Webhooks|Description (optional)" msgstr "" msgid "Webhooks|Do not show sensitive data such as tokens in the UI." @@ -55057,7 +55057,7 @@ msgstr "" msgid "Webhooks|Must match part of URL" msgstr "" -msgid "Webhooks|Name" +msgid "Webhooks|Name (optional)" msgstr "" msgid "Webhooks|Pipeline events" -- GitLab