From b3f0a82f501ce26717a6f9e57d91cb2b1f1a967b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Coutable?= Date: Thu, 28 Jul 2016 19:30:34 +0200 Subject: New Members::ApproveAccessRequestService MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rémy Coutable --- .../members/approve_access_request_service.rb | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 app/services/members/approve_access_request_service.rb (limited to 'app/services/members') diff --git a/app/services/members/approve_access_request_service.rb b/app/services/members/approve_access_request_service.rb new file mode 100644 index 00000000000..0324f0bb4bd --- /dev/null +++ b/app/services/members/approve_access_request_service.rb @@ -0,0 +1,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 -- cgit v1.2.3