summaryrefslogtreecommitdiff
path: root/lib/gitlab/bitbucket_import/project_creator.rb
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2015-08-07 00:06:20 -0700
committerStan Hu <stanhu@gmail.com>2015-08-23 09:23:44 -0700
commited1d4fa477789659f9343593bf06d50e70750561 (patch)
treec7d208bd6be17632a314eb090456f1a30f42f13b /lib/gitlab/bitbucket_import/project_creator.rb
parent97cc91d21d28a6482dc6ab040db31598a786f56c (diff)
downloadgitlab-ce-ed1d4fa477789659f9343593bf06d50e70750561.tar.gz
Remove user OAuth tokens stored in database for Bitbucket, GitHub, and GitLab
and request them each session. Pass these tokens to the project import data. This prevents the need to encrypt these tokens and clear them in case they expire or get revoked. For example, if you deleted and re-created OAuth2 keys for Bitbucket, you would get an Error 500 with no way to recover: ``` Started GET "/import/bitbucket/status" for x.x.x.x at 2015-08-07 05:24:10 +0000 Processing by Import::BitbucketController#status as HTML Completed 500 Internal Server Error in 607ms (ActiveRecord: 2.3ms) NameError (uninitialized constant Import::BitbucketController::Unauthorized): app/controllers/import/bitbucket_controller.rb:77:in `rescue in go_to_bitbucket_for_permissions' app/controllers/import/bitbucket_controller.rb:74:in `go_to_bitbucket_for_permissions' app/controllers/import/bitbucket_controller.rb:86:in `bitbucket_unauthorized' ``` Closes #1871
Diffstat (limited to 'lib/gitlab/bitbucket_import/project_creator.rb')
-rw-r--r--lib/gitlab/bitbucket_import/project_creator.rb12
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/gitlab/bitbucket_import/project_creator.rb b/lib/gitlab/bitbucket_import/project_creator.rb
index 54420e62c90..35e34d033e0 100644
--- a/lib/gitlab/bitbucket_import/project_creator.rb
+++ b/lib/gitlab/bitbucket_import/project_creator.rb
@@ -1,16 +1,17 @@
module Gitlab
module BitbucketImport
class ProjectCreator
- attr_reader :repo, :namespace, :current_user
+ attr_reader :repo, :namespace, :current_user, :session_data
- def initialize(repo, namespace, current_user)
+ def initialize(repo, namespace, current_user, session_data)
@repo = repo
@namespace = namespace
@current_user = current_user
+ @session_data = session_data
end
def execute
- ::Projects::CreateService.new(current_user,
+ project = ::Projects::CreateService.new(current_user,
name: repo["name"],
path: repo["slug"],
description: repo["description"],
@@ -18,8 +19,11 @@ module Gitlab
visibility_level: repo["is_private"] ? Gitlab::VisibilityLevel::PRIVATE : Gitlab::VisibilityLevel::PUBLIC,
import_type: "bitbucket",
import_source: "#{repo["owner"]}/#{repo["slug"]}",
- import_url: "ssh://git@bitbucket.org/#{repo["owner"]}/#{repo["slug"]}.git"
+ import_url: "ssh://git@bitbucket.org/#{repo["owner"]}/#{repo["slug"]}.git",
).execute
+
+ project.create_import_data(data: { "bb_session" => session_data } )
+ project
end
end
end