summaryrefslogtreecommitdiff
path: root/app/services/projects/move_access_service.rb
blob: 3af3a22d486bc70b9b52a58e9dbe442e625f9a23 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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