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

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2016-07-28 20:30:34 +0300
committerRémy Coutable <remy@rymai.me>2016-09-22 16:50:47 +0300
commitb3f0a82f501ce26717a6f9e57d91cb2b1f1a967b (patch)
treed4eabb5b40c1140fd6619084ff11e849d44eb7db /app/services/members
parent8071dc83fa00361b7bdee6e76ef2d4a59851b154 (diff)
New Members::ApproveAccessRequestService
Signed-off-by: Rémy Coutable <remy@rymai.me>
Diffstat (limited to 'app/services/members')
-rw-r--r--app/services/members/approve_access_request_service.rb30
1 files changed, 30 insertions, 0 deletions
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