summaryrefslogtreecommitdiff
path: root/app/services/projects/move_access_service.rb
diff options
context:
space:
mode:
authorFrancisco Javier López <fjlopez@gitlab.com>2018-04-06 15:23:49 +0000
committerDouwe Maan <douwe@gitlab.com>2018-04-06 15:23:49 +0000
commitf20912df033d07c46b0989012244d96d0a12b66d (patch)
tree6207b8face17f9b7166ba1a5e047032e3927e53e /app/services/projects/move_access_service.rb
parent44f4a674e2a87d104f700265d835aba000c589f0 (diff)
downloadgitlab-ce-f20912df033d07c46b0989012244d96d0a12b66d.tar.gz
Extend API for importing a project export with overwrite support
Diffstat (limited to 'app/services/projects/move_access_service.rb')
-rw-r--r--app/services/projects/move_access_service.rb25
1 files changed, 25 insertions, 0 deletions
diff --git a/app/services/projects/move_access_service.rb b/app/services/projects/move_access_service.rb
new file mode 100644
index 00000000000..3af3a22d486
--- /dev/null
+++ b/app/services/projects/move_access_service.rb
@@ -0,0 +1,25 @@
+module Projects
+ class MoveAccessService < BaseMoveRelationsService
+ def execute(source_project, remove_remaining_elements: true)
+ return unless super
+
+ @project.with_transaction_returning_status do
+ if @project.namespace != source_project.namespace
+ @project.run_after_commit do
+ source_project.namespace.refresh_project_authorizations
+ self.namespace.refresh_project_authorizations
+ end
+ end
+
+ ::Projects::MoveProjectMembersService.new(@project, @current_user)
+ .execute(source_project, remove_remaining_elements: remove_remaining_elements)
+ ::Projects::MoveProjectGroupLinksService.new(@project, @current_user)
+ .execute(source_project, remove_remaining_elements: remove_remaining_elements)
+ ::Projects::MoveProjectAuthorizationsService.new(@project, @current_user)
+ .execute(source_project, remove_remaining_elements: remove_remaining_elements)
+
+ success
+ end
+ end
+ end
+end