summaryrefslogtreecommitdiff
path: root/app/controllers/concerns/membership_actions.rb
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2016-06-17 18:59:33 +0200
committerRémy Coutable <remy@rymai.me>2016-06-18 06:06:34 +0200
commit654565c9dc734a597c525a75c8f72dd63235604b (patch)
tree0dbd5935c0019201dc93ee183e69e95d5f3513ce /app/controllers/concerns/membership_actions.rb
parenta08a26ac814d7fd9f7523e22847fab0cc25ceb78 (diff)
downloadgitlab-ce-654565c9dc734a597c525a75c8f72dd63235604b.tar.gz
Raise a new Gitlab::Access::AccessDeniedError when permission is not enough to destroy a member
This is a try for a new approach to put the access checks at the service level. Signed-off-by: Rémy Coutable <remy@rymai.me>
Diffstat (limited to 'app/controllers/concerns/membership_actions.rb')
-rw-r--r--app/controllers/concerns/membership_actions.rb34
1 files changed, 8 insertions, 26 deletions
diff --git a/app/controllers/concerns/membership_actions.rb b/app/controllers/concerns/membership_actions.rb
index 7e6b83bcc37..52dc396af6a 100644
--- a/app/controllers/concerns/membership_actions.rb
+++ b/app/controllers/concerns/membership_actions.rb
@@ -21,32 +21,18 @@ module MembershipActions
def leave
@member = membershipable.members.find_by(user_id: current_user)
- return render_403 unless @member
-
- @member = Members::DestroyService.new(@member, current_user).execute
+ Members::DestroyService.new(@member, current_user).execute
source_type = @member.real_source_type.humanize(capitalize: false)
-
- if @member.destroyed?
- notice =
- if @member.request?
- "Your access request to the #{source_type} has been withdrawn."
- else
- "You left the \"#{@member.source.human_name}\" #{source_type}."
- end
- redirect_path = @member.request? ? @member.source : [:dashboard, @member.real_source_type.tableize]
-
- redirect_to redirect_path, notice: notice
- else
- if cannot_leave?
- alert = "You can not leave the \"#{@member.source.human_name}\" #{source_type}."
- alert << " Transfer or delete the #{source_type}."
-
- redirect_to polymorphic_url(membershipable), alert: alert
+ notice =
+ if @member.request?
+ "Your access request to the #{source_type} has been withdrawn."
else
- render_403
+ "You left the \"#{@member.source.human_name}\" #{source_type}."
end
- end
+ redirect_path = @member.request? ? @member.source : [:dashboard, @member.real_source_type.tableize]
+
+ redirect_to redirect_path, notice: notice
end
protected
@@ -54,8 +40,4 @@ module MembershipActions
def membershipable
raise NotImplementedError
end
-
- def cannot_leave?
- raise NotImplementedError
- end
end