diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-04-20 12:18:59 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-04-20 12:18:59 +0300 |
commit | c7eec01f1b68b2e047cdd709751cb695ab329933 (patch) | |
tree | 47609cd0e5f00afdd1532cf951f9c0055a125641 /app/assets/javascripts/packages_and_registries | |
parent | 9b863f753f0320a95af1ff774cd0c1d4ec7d2754 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/packages_and_registries')
5 files changed, 85 insertions, 62 deletions
diff --git a/app/assets/javascripts/packages_and_registries/package_registry/components/delete_modal.vue b/app/assets/javascripts/packages_and_registries/package_registry/components/delete_modal.vue index f790c7b1430..0c3494ea812 100644 --- a/app/assets/javascripts/packages_and_registries/package_registry/components/delete_modal.vue +++ b/app/assets/javascripts/packages_and_registries/package_registry/components/delete_modal.vue @@ -16,10 +16,6 @@ import { export default { name: 'DeleteModal', - i18n: { - DELETE_MODAL_CONTENT, - DELETE_PACKAGES_MODAL_DESCRIPTION, - }, components: { GlLink, GlModal, @@ -38,15 +34,21 @@ export default { }, computed: { itemToBeDeleted() { - if (this.itemsToBeDeleted.length === 1) { - const [itemToBeDeleted] = this.itemsToBeDeleted; - return itemToBeDeleted; - } - return null; + return this.itemsToBeDeleted.length === 1 ? this.itemsToBeDeleted[0] : null; }, title() { return this.itemToBeDeleted ? DELETE_MODAL_TITLE : DELETE_PACKAGES_MODAL_TITLE; }, + packageDescription() { + return this.showRequestForwardingContent + ? DELETE_PACKAGE_REQUEST_FORWARDING_MODAL_CONTENT + : DELETE_MODAL_CONTENT; + }, + packagesDescription() { + return this.showRequestForwardingContent + ? DELETE_PACKAGES_REQUEST_FORWARDING_MODAL_CONTENT + : DELETE_PACKAGES_MODAL_DESCRIPTION; + }, packagesDeletePrimaryActionProps() { let text = DELETE_PACKAGE_MODAL_PRIMARY_ACTION; @@ -62,11 +64,6 @@ export default { attributes: { variant: 'danger', category: 'primary' }, }; }, - requestForwardingContentMessage() { - return this.itemToBeDeleted - ? DELETE_PACKAGE_REQUEST_FORWARDING_MODAL_CONTENT - : DELETE_PACKAGES_REQUEST_FORWARDING_MODAL_CONTENT; - }, }, modal: { cancelAction: { @@ -95,24 +92,23 @@ export default { @primary="$emit('confirm')" @cancel="$emit('cancel')" > - <p v-if="showRequestForwardingContent"> - <gl-sprintf :message="requestForwardingContentMessage"> - <template #docLink="{ content }"> + <p> + <gl-sprintf v-if="itemToBeDeleted" :message="packageDescription"> + <template v-if="showRequestForwardingContent" #docLink="{ content }"> <gl-link :href="$options.links.REQUEST_FORWARDING_HELP_PAGE_PATH">{{ content }}</gl-link> </template> - </gl-sprintf> - </p> - <p v-else> - <gl-sprintf v-if="itemToBeDeleted" :message="$options.i18n.DELETE_MODAL_CONTENT"> <template #version> <strong>{{ itemToBeDeleted.version }}</strong> </template> - <template #name> <strong>{{ itemToBeDeleted.name }}</strong> </template> </gl-sprintf> - <gl-sprintf v-else :message="$options.i18n.DELETE_PACKAGES_MODAL_DESCRIPTION"> + <gl-sprintf v-else :message="packagesDescription"> + <template v-if="showRequestForwardingContent" #docLink="{ content }"> + <gl-link :href="$options.links.REQUEST_FORWARDING_HELP_PAGE_PATH">{{ content }}</gl-link> + </template> + <template #count> {{ itemsToBeDeleted.length }} </template> diff --git a/app/assets/javascripts/packages_and_registries/package_registry/components/details/package_versions_list.vue b/app/assets/javascripts/packages_and_registries/package_registry/components/details/package_versions_list.vue index 7ea19df7a6c..482249bc252 100644 --- a/app/assets/javascripts/packages_and_registries/package_registry/components/details/package_versions_list.vue +++ b/app/assets/javascripts/packages_and_registries/package_registry/components/details/package_versions_list.vue @@ -6,7 +6,6 @@ import VersionRow from '~/packages_and_registries/package_registry/components/de import PackagesListLoader from '~/packages_and_registries/shared/components/packages_list_loader.vue'; import RegistryList from '~/packages_and_registries/shared/components/registry_list.vue'; import DeleteModal from '~/packages_and_registries/package_registry/components/delete_modal.vue'; -import DeletePackageModal from '~/packages_and_registries/shared/components/delete_package_modal.vue'; import { CANCEL_DELETE_PACKAGE_VERSION_TRACKING_ACTION, CANCEL_DELETE_PACKAGE_VERSIONS_TRACKING_ACTION, @@ -24,7 +23,6 @@ import getPackageVersionsQuery from '~/packages_and_registries/package_registry/ export default { components: { DeleteModal, - DeletePackageModal, GlAlert, VersionRow, PackagesListLoader, @@ -47,6 +45,11 @@ export default { required: false, default: false, }, + isRequestForwardingEnabled: { + type: Boolean, + required: false, + default: false, + }, packageId: { type: String, required: true, @@ -54,7 +57,6 @@ export default { }, data() { return { - itemToBeDeleted: null, itemsToBeDeleted: [], packageVersions: {}, fetchPackageVersionsError: false, @@ -79,6 +81,9 @@ export default { }, }, computed: { + itemToBeDeleted() { + return this.itemsToBeDeleted.length === 1 ? this.itemsToBeDeleted[0] : null; + }, isListEmpty() { return this.count === 0; }, @@ -110,36 +115,31 @@ export default { }, }, methods: { - deleteItemConfirmation() { - this.$emit('delete', [this.itemToBeDeleted]); - this.track(DELETE_PACKAGE_VERSION_TRACKING_ACTION); - this.itemToBeDeleted = null; - }, - deleteItemCanceled() { - this.track(CANCEL_DELETE_PACKAGE_VERSION_TRACKING_ACTION); - this.itemToBeDeleted = null; - }, deleteItemsCanceled() { - this.track(CANCEL_DELETE_PACKAGE_VERSIONS_TRACKING_ACTION); + if (this.itemToBeDeleted) { + this.track(CANCEL_DELETE_PACKAGE_VERSION_TRACKING_ACTION); + } else { + this.track(CANCEL_DELETE_PACKAGE_VERSIONS_TRACKING_ACTION); + } + this.itemsToBeDeleted = []; }, deleteItemsConfirmation() { this.$emit('delete', this.itemsToBeDeleted); - this.track(DELETE_PACKAGE_VERSIONS_TRACKING_ACTION); + if (this.itemToBeDeleted) { + this.track(DELETE_PACKAGE_VERSION_TRACKING_ACTION); + } else { + this.track(DELETE_PACKAGE_VERSIONS_TRACKING_ACTION); + } this.itemsToBeDeleted = []; }, - setItemToBeDeleted(item) { - this.itemToBeDeleted = { ...item }; - this.track(REQUEST_DELETE_PACKAGE_VERSION_TRACKING_ACTION); - }, setItemsToBeDeleted(items) { + this.itemsToBeDeleted = items; if (items.length === 1) { - const [item] = items; - this.setItemToBeDeleted(item); - return; + this.track(REQUEST_DELETE_PACKAGE_VERSION_TRACKING_ACTION); + } else { + this.track(REQUEST_DELETE_PACKAGE_VERSIONS_TRACKING_ACTION); } - this.itemsToBeDeleted = items; - this.track(REQUEST_DELETE_PACKAGE_VERSIONS_TRACKING_ACTION); this.$refs.deletePackagesModal.show(); }, fetchPreviousVersionsPage() { @@ -196,21 +196,16 @@ export default { :first="first" :package-entity="item" :selected="isSelected(item)" - @delete="setItemToBeDeleted(item)" + @delete="setItemsToBeDeleted([item])" @select="selectItem(item)" /> </template> </registry-list> - <delete-package-modal - :item-to-be-deleted="itemToBeDeleted" - @ok="deleteItemConfirmation" - @cancel="deleteItemCanceled" - /> - <delete-modal ref="deletePackagesModal" :items-to-be-deleted="itemsToBeDeleted" + :show-request-forwarding-content="isRequestForwardingEnabled" @confirm="deleteItemsConfirmation" @cancel="deleteItemsCanceled" /> diff --git a/app/assets/javascripts/packages_and_registries/package_registry/constants.js b/app/assets/javascripts/packages_and_registries/package_registry/constants.js index ad5edcd7602..b4276d69ed6 100644 --- a/app/assets/javascripts/packages_and_registries/package_registry/constants.js +++ b/app/assets/javascripts/packages_and_registries/package_registry/constants.js @@ -136,7 +136,7 @@ export const DELETE_PACKAGES_WITH_REQUEST_FORWARDING_PRIMARY_ACTION = s__( 'PackageRegistry|Yes, delete selected packages', ); export const DELETE_PACKAGE_REQUEST_FORWARDING_MODAL_CONTENT = s__( - 'PackageRegistry|Deleting this package while request forwarding is enabled for the project can pose a security risk. Do you want to delete the package anyway? %{docLinkStart}What are the risks?%{docLinkEnd}', + 'PackageRegistry|Deleting this package while request forwarding is enabled for the project can pose a security risk. Do you want to delete %{name} version %{version} anyway? %{docLinkStart}What are the risks?%{docLinkEnd}', ); export const DELETE_PACKAGES_REQUEST_FORWARDING_MODAL_CONTENT = s__( 'PackageRegistry|Some of the selected package formats allow request forwarding. Deleting a package while request forwarding is enabled for the project can pose a security risk. Do you want to proceed with deleting the selected packages? %{docLinkStart}What are the risks?%{docLinkEnd}', diff --git a/app/assets/javascripts/packages_and_registries/package_registry/graphql/queries/get_package_details.query.graphql b/app/assets/javascripts/packages_and_registries/package_registry/graphql/queries/get_package_details.query.graphql index 99864f7ad0c..984996b829a 100644 --- a/app/assets/javascripts/packages_and_registries/package_registry/graphql/queries/get_package_details.query.graphql +++ b/app/assets/javascripts/packages_and_registries/package_registry/graphql/queries/get_package_details.query.graphql @@ -1,3 +1,5 @@ +#import "~/packages_and_registries/package_registry/graphql/fragments/package_group_settings.fragment.graphql" + query getPackageDetails($id: PackagesPackageID!) { package(id: $id) { id @@ -23,6 +25,9 @@ query getPackageDetails($id: PackagesPackageID!) { path name fullPath + group { + ...GroupPackageSettings + } } tags(first: 10) { nodes { 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 0f1c63a04ad..6d4979ac785 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 @@ -2,6 +2,7 @@ import { GlBadge, GlButton, + GlLink, GlModal, GlModalDirective, GlTooltipDirective, @@ -37,6 +38,7 @@ import { DELETE_PACKAGE_FILE_TRACKING_ACTION, DELETE_PACKAGE_FILES_TRACKING_ACTION, REQUEST_DELETE_PACKAGE_FILE_TRACKING_ACTION, + REQUEST_FORWARDING_HELP_PAGE_PATH, CANCEL_DELETE_PACKAGE_FILE_TRACKING_ACTION, SHOW_DELETE_SUCCESS_ALERT, FETCH_PACKAGE_DETAILS_ERROR_MESSAGE, @@ -44,6 +46,7 @@ import { DELETE_PACKAGE_FILE_SUCCESS_MESSAGE, DELETE_PACKAGE_FILES_ERROR_MESSAGE, DELETE_PACKAGE_FILES_SUCCESS_MESSAGE, + DELETE_PACKAGE_REQUEST_FORWARDING_MODAL_CONTENT, DOWNLOAD_PACKAGE_ASSET_TRACKING_ACTION, DELETE_MODAL_TITLE, DELETE_MODAL_CONTENT, @@ -64,6 +67,7 @@ export default { GlButton, GlEmptyState, GlModal, + GlLink, GlTab, GlTabs, GlSprintf, @@ -124,6 +128,11 @@ export default { }, }, computed: { + deleteModalContent() { + return this.isRequestForwardingEnabled + ? DELETE_PACKAGE_REQUEST_FORWARDING_MODAL_CONTENT + : this.deletePackageModalContent; + }, projectName() { return this.packageEntity.project?.name; }, @@ -170,6 +179,12 @@ export default { showFiles() { return this.packageType !== PACKAGE_TYPE_COMPOSER; }, + groupSettings() { + return this.packageEntity.project?.group?.packageSettings ?? {}; + }, + isRequestForwardingEnabled() { + return this.groupSettings[`${this.packageType.toLowerCase()}PackageRequestsForwarding`]; + }, showMetadata() { return [ PACKAGE_TYPE_COMPOSER, @@ -291,6 +306,9 @@ export default { ), otherVersionsTabTitle: s__('PackageRegistry|Other versions'), }, + links: { + REQUEST_FORWARDING_HELP_PAGE_PATH, + }, modal: { packageDeletePrimaryAction: { text: s__('PackageRegistry|Permanently delete'), @@ -398,6 +416,7 @@ export default { :can-destroy="packageEntity.canDestroy" :count="packageVersionsCount" :is-mutation-loading="versionsMutationLoading" + :is-request-forwarding-enabled="isRequestForwardingEnabled" :package-id="packageEntity.id" @delete="deletePackages" > @@ -429,15 +448,23 @@ export default { @canceled="track($options.trackingActions.CANCEL_DELETE_PACKAGE)" > <template #modal-title>{{ $options.i18n.DELETE_MODAL_TITLE }}</template> - <gl-sprintf :message="deletePackageModalContent"> - <template #version> - <strong>{{ packageEntity.version }}</strong> - </template> + <p> + <gl-sprintf :message="deleteModalContent"> + <template v-if="isRequestForwardingEnabled" #docLink="{ content }"> + <gl-link :href="$options.links.REQUEST_FORWARDING_HELP_PAGE_PATH">{{ + content + }}</gl-link> + </template> + + <template #version> + <strong>{{ packageEntity.version }}</strong> + </template> - <template #name> - <strong>{{ packageEntity.name }}</strong> - </template> - </gl-sprintf> + <template #name> + <strong>{{ packageEntity.name }}</strong> + </template> + </gl-sprintf> + </p> </gl-modal> </template> </delete-packages> |