diff options
Diffstat (limited to 'app/controllers/import')
-rw-r--r-- | app/controllers/import/available_namespaces_controller.rb | 10 | ||||
-rw-r--r-- | app/controllers/import/bitbucket_controller.rb | 4 | ||||
-rw-r--r-- | app/controllers/import/bitbucket_server_controller.rb | 4 | ||||
-rw-r--r-- | app/controllers/import/bulk_imports_controller.rb | 23 | ||||
-rw-r--r-- | app/controllers/import/github_controller.rb | 19 |
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') |