Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/packages/package.rb')
-rw-r--r--app/models/packages/package.rb14
1 files changed, 11 insertions, 3 deletions
diff --git a/app/models/packages/package.rb b/app/models/packages/package.rb
index d2e4f46898c..4ea127fc222 100644
--- a/app/models/packages/package.rb
+++ b/app/models/packages/package.rb
@@ -62,7 +62,7 @@ class Packages::Package < ApplicationRecord
validate :valid_conan_package_recipe, if: :conan?
validate :valid_composer_global_name, if: :composer?
- validate :package_already_taken, if: :npm?
+ validate :npm_package_already_taken, if: :npm?
validates :name, format: { with: Gitlab::Regex.conan_recipe_component_regex }, if: :conan?
validates :name, format: { with: Gitlab::Regex.generic_package_name_regex }, if: :generic?
validates :name, format: { with: Gitlab::Regex.helm_package_regex }, if: :helm?
@@ -320,14 +320,22 @@ class Packages::Package < ApplicationRecord
end
end
- def package_already_taken
+ def npm_package_already_taken
return unless project
+ return unless follows_npm_naming_convention?
- if project.package_already_taken?(name)
+ if project.package_already_taken?(name, version, package_type: :npm)
errors.add(:base, _('Package already exists'))
end
end
+ # https://docs.gitlab.com/ee/user/packages/npm_registry/#package-naming-convention
+ def follows_npm_naming_convention?
+ return false unless project&.root_namespace&.path
+
+ project.root_namespace.path == ::Packages::Npm.scope_of(name)
+ end
+
def unique_debian_package_name
return unless debian_publication&.distribution