summaryrefslogtreecommitdiff
path: root/app/services/projects/move_access_service.rb
diff options
context:
space:
mode:
authorSean McGivern <sean@mcgivern.me.uk>2018-04-10 10:25:59 +0000
committerSean McGivern <sean@mcgivern.me.uk>2018-04-10 10:25:59 +0000
commit33a4439e8f079303fcf7c71267936e5c8f694958 (patch)
tree828c3c6dc55058e95927d36a3a03db9fd0263766 /app/services/projects/move_access_service.rb
parent2db218f8bf186c509c927ce3e9d0502fee4f8349 (diff)
parent174950b6562226beed7eef135a2450bfee60e21f (diff)
downloadgitlab-ce-33a4439e8f079303fcf7c71267936e5c8f694958.tar.gz
Merge branch 'master' into 'stuartnelson3/gitlab-ce-stn/issue-due-email'
# Conflicts: # db/schema.rb
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