diff options
author | Rémy Coutable <remy@rymai.me> | 2016-06-17 14:06:55 +0200 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2016-06-18 05:46:45 +0200 |
commit | 4652489f40a4ff2b749f9ad495986a7a17448243 (patch) | |
tree | 90a373da8bdbaf66bc0228abf8465d9d928c9f2e /app/controllers | |
parent | 00906b5bb6cde8cb60281109060a519a54000c61 (diff) | |
download | gitlab-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')
-rw-r--r-- | app/controllers/concerns/membership_actions.rb | 6 |
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 |