summaryrefslogtreecommitdiff
path: root/app/controllers/import
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-01-18 19:00:14 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2023-01-18 19:00:14 +0000
commit05f0ebba3a2c8ddf39e436f412dc2ab5bf1353b2 (patch)
tree11d0f2a6ec31c7793c184106cedc2ded3d9a2cc5 /app/controllers/import
parentec73467c23693d0db63a797d10194da9e72a74af (diff)
downloadgitlab-ce-05f0ebba3a2c8ddf39e436f412dc2ab5bf1353b2.tar.gz
Add latest changes from gitlab-org/gitlab@15-8-stable-eev15.8.0-rc42
Diffstat (limited to 'app/controllers/import')
-rw-r--r--app/controllers/import/available_namespaces_controller.rb10
-rw-r--r--app/controllers/import/bitbucket_controller.rb4
-rw-r--r--app/controllers/import/bitbucket_server_controller.rb4
-rw-r--r--app/controllers/import/bulk_imports_controller.rb23
-rw-r--r--app/controllers/import/github_controller.rb19
5 files changed, 41 insertions, 19 deletions
diff --git a/app/controllers/import/available_namespaces_controller.rb b/app/controllers/import/available_namespaces_controller.rb
deleted file mode 100644
index c16c40cefea..00000000000
--- a/app/controllers/import/available_namespaces_controller.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-# frozen_string_literal: true
-
-class Import::AvailableNamespacesController < ApplicationController
- feature_category :importers
- urgency :low
-
- def index
- render json: NamespaceSerializer.new.represent(current_user.manageable_groups_with_routes(include_groups_with_developer_maintainer_access: true))
- end
-end
diff --git a/app/controllers/import/bitbucket_controller.rb b/app/controllers/import/bitbucket_controller.rb
index 1d05cee02d4..8a0f4a36781 100644
--- a/app/controllers/import/bitbucket_controller.rb
+++ b/app/controllers/import/bitbucket_controller.rb
@@ -78,12 +78,12 @@ class Import::BitbucketController < Import::BaseController
override :importable_repos
def importable_repos
- bitbucket_repos.filter { |repo| repo.valid? }
+ bitbucket_repos.filter(&:valid?)
end
override :incompatible_repos
def incompatible_repos
- bitbucket_repos.reject { |repo| repo.valid? }
+ bitbucket_repos.reject(&:valid?)
end
def provider_url
diff --git a/app/controllers/import/bitbucket_server_controller.rb b/app/controllers/import/bitbucket_server_controller.rb
index 12147196749..40664922d3d 100644
--- a/app/controllers/import/bitbucket_server_controller.rb
+++ b/app/controllers/import/bitbucket_server_controller.rb
@@ -63,12 +63,12 @@ class Import::BitbucketServerController < Import::BaseController
override :importable_repos
def importable_repos
- bitbucket_repos.filter { |repo| repo.valid? }
+ bitbucket_repos.filter(&:valid?)
end
override :incompatible_repos
def incompatible_repos
- bitbucket_repos.reject { |repo| repo.valid? }
+ bitbucket_repos.reject(&:valid?)
end
override :provider_name
diff --git a/app/controllers/import/bulk_imports_controller.rb b/app/controllers/import/bulk_imports_controller.rb
index 9a7118ce498..e9705c45116 100644
--- a/app/controllers/import/bulk_imports_controller.rb
+++ b/app/controllers/import/bulk_imports_controller.rb
@@ -3,8 +3,11 @@
class Import::BulkImportsController < ApplicationController
include ActionView::Helpers::SanitizeHelper
- before_action :ensure_group_import_enabled
+ before_action :ensure_bulk_import_enabled
before_action :verify_blocked_uri, only: :status
+ before_action only: :status do
+ push_frontend_feature_flag(:bulk_import_projects)
+ end
feature_category :importers
urgency :low
@@ -17,6 +20,9 @@ class Import::BulkImportsController < ApplicationController
session[access_token_key] = configure_params[access_token_key]&.strip
session[url_key] = configure_params[url_key]
+ verify_blocked_uri && performed? && return
+ validate_configure_params!
+
redirect_to status_import_bulk_imports_url(namespace_id: params[:namespace_id])
end
@@ -100,6 +106,16 @@ class Import::BulkImportsController < ApplicationController
params.permit(access_token_key, url_key)
end
+ def validate_configure_params!
+ client = BulkImports::Clients::HTTP.new(
+ url: credentials[:url],
+ token: credentials[:access_token]
+ )
+
+ client.validate_instance_version!
+ client.validate_import_scopes!
+ end
+
def create_params
params.permit(bulk_import: bulk_import_params)[:bulk_import]
end
@@ -115,11 +131,12 @@ class Import::BulkImportsController < ApplicationController
destination_name
destination_slug
destination_namespace
+ migrate_projects
]
end
- def ensure_group_import_enabled
- render_404 unless ::BulkImports::Features.enabled?
+ def ensure_bulk_import_enabled
+ render_404 unless Gitlab::CurrentSettings.bulk_import_enabled?
end
def access_token_key
diff --git a/app/controllers/import/github_controller.rb b/app/controllers/import/github_controller.rb
index cb58b5974ca..9a8f6a74653 100644
--- a/app/controllers/import/github_controller.rb
+++ b/app/controllers/import/github_controller.rb
@@ -150,7 +150,7 @@ class Import::GithubController < Import::BaseController
end
def client_repos_response
- @client_repos_response ||= client_proxy.repos(sanitized_filter_param, pagination_options)
+ @client_repos_response ||= client_proxy.repos(sanitized_filter_param, fetch_repos_options)
end
def client_repos
@@ -160,7 +160,11 @@ class Import::GithubController < Import::BaseController
def sanitized_filter_param
super
- @filter = @filter&.tr(' ', '')&.tr(':', '')
+ @filter = sanitize_query_param(@filter)
+ end
+
+ def sanitize_query_param(value)
+ value.to_s.first(255).gsub(/[ :]/, '')
end
def verify_import_enabled
@@ -222,6 +226,10 @@ class Import::GithubController < Import::BaseController
head :too_many_requests
end
+ def fetch_repos_options
+ pagination_options.merge(relation_options)
+ end
+
def pagination_options
{
before: params[:before].presence,
@@ -233,6 +241,13 @@ class Import::GithubController < Import::BaseController
per_page: PAGE_LENGTH
}
end
+
+ def relation_options
+ {
+ relation_type: params[:relation_type],
+ organization_login: sanitize_query_param(params[:organization_login])
+ }
+ end
end
Import::GithubController.prepend_mod_with('Import::GithubController')