summaryrefslogtreecommitdiff
path: root/app/controllers/import/github_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/import/github_controller.rb')
-rw-r--r--app/controllers/import/github_controller.rb26
1 files changed, 18 insertions, 8 deletions
diff --git a/app/controllers/import/github_controller.rb b/app/controllers/import/github_controller.rb
index 55f4563285d..9bd8f893614 100644
--- a/app/controllers/import/github_controller.rb
+++ b/app/controllers/import/github_controller.rb
@@ -23,24 +23,25 @@ class Import::GithubController < Import::BaseController
if !ci_cd_only? && github_import_configured? && logged_in_with_provider?
go_to_provider_for_permissions
elsif session[access_token_key]
- redirect_to status_import_url
+ redirect_to status_import_url(namespace_id: params[:namespace_id])
end
end
def callback
- auth_state = session[auth_state_key]
- session[auth_state_key] = nil
+ auth_state = session.delete(auth_state_key)
+ namespace_id = session.delete(:namespace_id)
+
if auth_state.blank? || !ActiveSupport::SecurityUtils.secure_compare(auth_state, params[:state])
provider_unauthorized
else
session[access_token_key] = get_token(params[:code])
- redirect_to status_import_url
+ redirect_to status_import_url(namespace_id: namespace_id)
end
end
def personal_access_token
session[access_token_key] = params[:personal_access_token]&.strip
- redirect_to status_import_url
+ redirect_to status_import_url(namespace_id: params[:namespace_id].presence)
end
def status
@@ -62,7 +63,15 @@ class Import::GithubController < Import::BaseController
end
def realtime_changes
- super
+ Gitlab::PollingInterval.set_header(response, interval: 3_000)
+
+ render json: already_added_projects.map { |project|
+ {
+ id: project.id,
+ import_status: project.import_status,
+ stats: ::Gitlab::GithubImport::ObjectCounter.summary(project)
+ }
+ }
end
protected
@@ -201,8 +210,8 @@ class Import::GithubController < Import::BaseController
public_send("new_import_#{provider_name}_url", extra_import_params) # rubocop:disable GitlabSecurity/PublicSend
end
- def status_import_url
- public_send("status_import_#{provider_name}_url", extra_import_params) # rubocop:disable GitlabSecurity/PublicSend
+ def status_import_url(namespace_id: nil)
+ public_send("status_import_#{provider_name}_url", extra_import_params.merge({ namespace_id: namespace_id })) # rubocop:disable GitlabSecurity/PublicSend
end
def callback_import_url
@@ -248,6 +257,7 @@ class Import::GithubController < Import::BaseController
def provider_auth
if !ci_cd_only? && session[access_token_key].blank?
+ session[:namespace_id] = params[:namespace_id]
go_to_provider_for_permissions
end
end