diff options
Diffstat (limited to 'app/controllers/import/github_controller.rb')
-rw-r--r-- | app/controllers/import/github_controller.rb | 26 |
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 |