diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-12-07 18:12:19 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-12-07 18:12:19 +0300 |
commit | 9a940dabf04df126e7978c0ab4b8770b86dcaaa8 (patch) | |
tree | f8b244f0cd4bf455015b97ba72ea3d4b51419d05 /app/services | |
parent | 8e81ce50767bd5c785072c2487ffb61fe075977c (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services')
3 files changed, 28 insertions, 0 deletions
diff --git a/app/services/packages/mark_package_for_destruction_service.rb b/app/services/packages/mark_package_for_destruction_service.rb index 8ccc242ae36..b41f1c0a291 100644 --- a/app/services/packages/mark_package_for_destruction_service.rb +++ b/app/services/packages/mark_package_for_destruction_service.rb @@ -11,6 +11,7 @@ module Packages package.mark_package_files_for_destruction package.sync_maven_metadata(current_user) + package.sync_npm_metadata_cache service_response_success('Package was successfully marked as pending destruction') rescue StandardError => e diff --git a/app/services/packages/mark_packages_for_destruction_service.rb b/app/services/packages/mark_packages_for_destruction_service.rb index ade9ad2c974..2c81a52ea24 100644 --- a/app/services/packages/mark_packages_for_destruction_service.rb +++ b/app/services/packages/mark_packages_for_destruction_service.rb @@ -43,6 +43,7 @@ module Packages .update_all(status: :pending_destruction) sync_maven_metadata(loaded_packages) + sync_npm_metadata(loaded_packages) mark_package_files_for_destruction(loaded_packages) end @@ -73,6 +74,15 @@ module Packages ) end + def sync_npm_metadata(packages) + npm_packages = packages.select(&:npm?) + ::Packages::Npm::CreateMetadataCacheWorker.bulk_perform_async_with_contexts( + npm_packages, + arguments_proc: -> (package) { [package.project_id, package.name] }, + context_proc: -> (package) { { project: package.project, user: @current_user } } + ) + end + def can_destroy_packages?(packages) packages.all? do |package| can?(@current_user, :destroy_package, package) diff --git a/app/services/service_desk/custom_email_verifications/update_service.rb b/app/services/service_desk/custom_email_verifications/update_service.rb index e3e8900b9e6..1b0e5e3c61a 100644 --- a/app/services/service_desk/custom_email_verifications/update_service.rb +++ b/app/services/service_desk/custom_email_verifications/update_service.rb @@ -44,6 +44,7 @@ module ServiceDesk def verify return :mail_not_received_within_timeframe if mail_not_received_within_timeframe? + return :incorrect_forwarding_target if forwarded_to_service_desk_alias_address? return :incorrect_from if incorrect_from? return :incorrect_token if incorrect_token? @@ -55,6 +56,16 @@ module ServiceDesk mail.blank? || !verification.in_timeframe? end + def forwarded_to_service_desk_alias_address? + return false unless Gitlab::Email::ServiceDeskEmail.enabled? + + # Users must use the Service Desk address created from `incoming_email` + # so all reply by email features work as expected. + # Using the Service Desk alias address generated from `service_desk_email` + # doesn't allow to ingest email replies, so we'd always add a new issue. + addresses_from_headers.include?(project.service_desk_alias_address) + end + def incorrect_from? # Does the email forwarder preserve the FROM header? mail.from.first != settings.custom_email @@ -70,6 +81,12 @@ module ServiceDesk scan_result.first.first != verification.token end + def addresses_from_headers + # Common headers for forwarding target addresses are + # `To` and `Delivered-To`. We may expand that list if necessary. + (Array(mail.to) + Array(mail['Delivered-To']).map(&:value)).uniq + end + def error_parameter_missing error_response(s_('ServiceDesk|Service Desk setting or verification object missing')) end |