summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-10-06 06:08:33 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-10-06 06:08:33 +0000
commit52b1470ada3118a007bc6664f72b665f80f2200e (patch)
tree6baec506af8a8e80e5cd1c53d2a348ca84b01412 /app
parent53a3791717e8925078f074b976a561c7a72b1b22 (diff)
downloadgitlab-ce-52b1470ada3118a007bc6664f72b665f80f2200e.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/packages_and_registries/infrastructure_registry/list/components/packages_list.vue11
-rw-r--r--app/assets/javascripts/packages_and_registries/package_registry/components/list/packages_list.vue11
-rw-r--r--app/assets/javascripts/packages_and_registries/package_registry/pages/details.vue2
-rw-r--r--app/controllers/projects/deploy_keys_controller.rb6
-rw-r--r--app/models/deploy_key.rb1
-rw-r--r--app/presenters/deploy_key_presenter.rb9
-rw-r--r--app/presenters/key_presenter.rb22
-rw-r--r--app/uploaders/object_storage/cdn/google_cdn.rb2
8 files changed, 46 insertions, 18 deletions
diff --git a/app/assets/javascripts/packages_and_registries/infrastructure_registry/list/components/packages_list.vue b/app/assets/javascripts/packages_and_registries/infrastructure_registry/list/components/packages_list.vue
index dab4a051d0c..8b6a5c59847 100644
--- a/app/assets/javascripts/packages_and_registries/infrastructure_registry/list/components/packages_list.vue
+++ b/app/assets/javascripts/packages_and_registries/infrastructure_registry/list/components/packages_list.vue
@@ -81,10 +81,9 @@ export default {
},
},
i18n: {
- deleteModalContent: s__(
- 'PackageRegistry|You are about to delete %{name}, this operation is irreversible, are you sure?',
- ),
- modalAction: s__('PackageRegistry|Delete package'),
+ deleteModalContent: s__('PackageRegistry|You are about to delete %{name}, are you sure?'),
+ modalTitle: s__('PackageRegistry|Delete package'),
+ modalAction: s__('PackageRegistry|Permanently delete'),
},
};
</script>
@@ -120,13 +119,13 @@ export default {
<gl-modal
ref="packageListDeleteModal"
size="sm"
- modal-id="confirm-delete-pacakge"
+ modal-id="confirm-delete-package"
:action-primary="deleteModalActionPrimaryProps"
:action-cancel="deleteModalActionCancelProps"
@ok="deleteItemConfirmation"
@cancel="deleteItemCanceled"
>
- <template #modal-title>{{ $options.i18n.modalAction }}</template>
+ <template #modal-title>{{ $options.i18n.modalTitle }}</template>
<gl-sprintf :message="$options.i18n.deleteModalContent">
<template #name>
<strong>{{ deletePackageName }}</strong>
diff --git a/app/assets/javascripts/packages_and_registries/package_registry/components/list/packages_list.vue b/app/assets/javascripts/packages_and_registries/package_registry/components/list/packages_list.vue
index e84f181e9b2..c6583b8f09f 100644
--- a/app/assets/javascripts/packages_and_registries/package_registry/components/list/packages_list.vue
+++ b/app/assets/javascripts/packages_and_registries/package_registry/components/list/packages_list.vue
@@ -122,10 +122,9 @@ export default {
},
},
i18n: {
- deleteModalContent: s__(
- 'PackageRegistry|You are about to delete %{name}, this operation is irreversible, are you sure?',
- ),
- modalAction: s__('PackageRegistry|Delete package'),
+ deleteModalContent: s__('PackageRegistry|You are about to delete %{name}, are you sure?'),
+ modalTitle: s__('PackageRegistry|Delete package'),
+ modalAction: s__('PackageRegistry|Permanently delete'),
errorMessageBodyAlert: s__(
'PackageRegistry|There was a timeout and the package was not published. Delete this package and try again.',
),
@@ -172,14 +171,14 @@ export default {
<gl-modal
v-model="showDeleteModal"
- modal-id="confirm-delete-pacakge"
+ modal-id="confirm-delete-package"
size="sm"
:action-primary="deleteModalActionPrimaryProps"
:action-cancel="deleteModalActionCancelProps"
@ok="deleteItemConfirmation"
@cancel="deleteItemCanceled"
>
- <template #modal-title>{{ $options.i18n.modalAction }}</template>
+ <template #modal-title>{{ $options.i18n.modalTitle }}</template>
<gl-sprintf :message="$options.i18n.deleteModalContent">
<template #name>
<strong>{{ deletePackageName }}</strong>
diff --git a/app/assets/javascripts/packages_and_registries/package_registry/pages/details.vue b/app/assets/javascripts/packages_and_registries/package_registry/pages/details.vue
index 0225beefa13..e5420dbdccf 100644
--- a/app/assets/javascripts/packages_and_registries/package_registry/pages/details.vue
+++ b/app/assets/javascripts/packages_and_registries/package_registry/pages/details.vue
@@ -263,7 +263,7 @@ export default {
},
modal: {
packageDeletePrimaryAction: {
- text: __('Delete'),
+ text: s__('PackageRegistry|Permanently delete'),
attributes: [
{ variant: 'danger' },
{ category: 'primary' },
diff --git a/app/controllers/projects/deploy_keys_controller.rb b/app/controllers/projects/deploy_keys_controller.rb
index 96afe9dbb9f..22a42d22914 100644
--- a/app/controllers/projects/deploy_keys_controller.rb
+++ b/app/controllers/projects/deploy_keys_controller.rb
@@ -27,11 +27,9 @@ class Projects::DeployKeysController < Projects::ApplicationController
end
def create
- @key = DeployKeys::CreateService.new(current_user, create_params).execute(project: @project)
+ @key = DeployKeys::CreateService.new(current_user, create_params).execute(project: @project).present
- unless @key.valid?
- flash[:alert] = @key.errors.full_messages.join(', ').html_safe
- end
+ flash[:alert] = @key.humanized_error_message unless @key.valid?
redirect_to_repository
end
diff --git a/app/models/deploy_key.rb b/app/models/deploy_key.rb
index 94ac2405f61..2563fd484f1 100644
--- a/app/models/deploy_key.rb
+++ b/app/models/deploy_key.rb
@@ -4,6 +4,7 @@ class DeployKey < Key
include FromUnion
include IgnorableColumns
include PolicyActor
+ include Presentable
has_many :deploy_keys_projects, inverse_of: :deploy_key, dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent
has_many :projects, through: :deploy_keys_projects
diff --git a/app/presenters/deploy_key_presenter.rb b/app/presenters/deploy_key_presenter.rb
new file mode 100644
index 00000000000..6f32487b6f6
--- /dev/null
+++ b/app/presenters/deploy_key_presenter.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class DeployKeyPresenter < KeyPresenter # rubocop:disable Gitlab/NamespacedClass
+ presents ::DeployKey, as: :deploy_key
+
+ def humanized_error_message
+ super(type: :deploy_key)
+ end
+end
diff --git a/app/presenters/key_presenter.rb b/app/presenters/key_presenter.rb
new file mode 100644
index 00000000000..e3eb5feedbf
--- /dev/null
+++ b/app/presenters/key_presenter.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+class KeyPresenter < Gitlab::View::Presenter::Delegated # rubocop:disable Gitlab/NamespacedClass
+ presents ::Key, as: :key_object
+
+ def humanized_error_message(type: :key)
+ if !key_object.public_key.valid?
+ help_link = help_page_link(_('supported SSH public key.'), 'user/ssh', 'supported-ssh-key-types')
+
+ _('%{type} must be a %{help_link}').html_safe % { type: type.to_s.titleize, help_link: help_link }
+ else
+ key_object.errors.full_messages.join(', ').html_safe
+ end
+ end
+
+ private
+
+ def help_page_link(title, path, anchor)
+ ActionController::Base.helpers.link_to(title, help_page_path(path, anchor: anchor),
+ target: '_blank', rel: 'noopener noreferrer')
+ end
+end
diff --git a/app/uploaders/object_storage/cdn/google_cdn.rb b/app/uploaders/object_storage/cdn/google_cdn.rb
index d34ed8ac897..91bad1f8d6b 100644
--- a/app/uploaders/object_storage/cdn/google_cdn.rb
+++ b/app/uploaders/object_storage/cdn/google_cdn.rb
@@ -19,7 +19,7 @@ module ObjectStorage
ip = IPAddr.new(request_ip)
- return false if ip.private?
+ return false if ip.private? || ip.link_local? || ip.loopback?
!GoogleIpCache.google_ip?(request_ip)
end