summaryrefslogtreecommitdiff
path: root/app/controllers/concerns/membership_actions.rb
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2016-06-17 14:06:55 +0200
committerRémy Coutable <remy@rymai.me>2016-06-18 05:46:45 +0200
commit4652489f40a4ff2b749f9ad495986a7a17448243 (patch)
tree90a373da8bdbaf66bc0228abf8465d9d928c9f2e /app/controllers/concerns/membership_actions.rb
parent00906b5bb6cde8cb60281109060a519a54000c61 (diff)
downloadgitlab-ce-4652489f40a4ff2b749f9ad495986a7a17448243.tar.gz
New Members::DestroyService
This is to ensure we don't send unwanted notifications when deleting a project. In other words, stop abusing AR callbacks and use services. 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.rb6
1 files changed, 4 insertions, 2 deletions
diff --git a/app/controllers/concerns/membership_actions.rb b/app/controllers/concerns/membership_actions.rb
index a24273fad0b..b1343576b3c 100644
--- a/app/controllers/concerns/membership_actions.rb
+++ b/app/controllers/concerns/membership_actions.rb
@@ -23,22 +23,24 @@ module MembershipActions
@member = membershipable.members.find_by(user_id: current_user)
return render_403 unless @member
+ @member = Members::DestroyService.new(@member, current_user).execute
+
source_type = @member.real_source_type.humanize(capitalize: false)
- if can?(current_user, action_member_permission(:destroy, @member), @member)
+ 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
- @member.destroy
redirect_to [:dashboard, @member.real_source_type.tableize], 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
else
render_403