Welcome to mirror list, hosted at ThFree Co, Russian Federation.

approve_access_request_service.rb « members « services « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 0324f0bb4bd157d9ef6028c360a3853d7a7d63b1 (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
26
27
28
29
30
module Members
  class ApproveAccessRequestService < BaseService
    include MembersHelper

    attr_accessor :source

    def initialize(source, current_user, params = {})
      @source = source
      @current_user = current_user
      @params = params
    end

    def execute
      access_requester = source.requesters.find_by!(user_id: params[:user_id])

      raise Gitlab::Access::AccessDeniedError if cannot_update_access_requester?(access_requester)

      access_requester.access_level = params[:access_level] if params[:access_level]
      access_requester.accept_request

      access_requester
    end

    private

    def cannot_update_access_requester?(access_requester)
      !access_requester || !can?(current_user, action_member_permission(:update, access_requester), access_requester)
    end
  end
end