mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 16:21:18 +08:00
DEV: extract leave_group method from the group#remove_member method (#13823)
* Copy remove_member to new `leave` method * Remove unneeded code from the leave method * Rearrange the leave method * Remove unneeded code from the remove_member method * Add tests * Implement on the client side
This commit is contained in:

committed by
GitHub

parent
27211ee7bb
commit
8bc01c1bb5
@ -464,7 +464,7 @@ class GroupsController < ApplicationController
|
||||
def remove_member
|
||||
group = Group.find_by(id: params[:id])
|
||||
raise Discourse::NotFound unless group
|
||||
group.public_exit ? ensure_logged_in : guardian.ensure_can_edit!(group)
|
||||
guardian.ensure_can_edit!(group)
|
||||
|
||||
# Maintain backwards compatibility
|
||||
params[:usernames] = params[:username] if params[:username].present?
|
||||
@ -475,16 +475,6 @@ class GroupsController < ApplicationController
|
||||
'user_ids or usernames or user_emails must be present'
|
||||
) if users.empty?
|
||||
|
||||
if group.public_exit
|
||||
if !guardian.can_log_group_changes?(group) && current_user != users.first
|
||||
raise Discourse::InvalidAccess
|
||||
end
|
||||
|
||||
unless current_user.staff?
|
||||
RateLimiter.new(current_user, "public_group_membership", 3, 1.minute).performed!
|
||||
end
|
||||
end
|
||||
|
||||
removed_users = []
|
||||
skipped_users = []
|
||||
|
||||
@ -507,6 +497,21 @@ class GroupsController < ApplicationController
|
||||
)
|
||||
end
|
||||
|
||||
def leave
|
||||
ensure_logged_in
|
||||
unless current_user.staff?
|
||||
RateLimiter.new(current_user, "public_group_membership", 3, 1.minute).performed!
|
||||
end
|
||||
|
||||
group = Group.find_by(id: params[:id])
|
||||
raise Discourse::NotFound unless group
|
||||
raise Discourse::InvalidAccess unless group.public_exit
|
||||
|
||||
if group.remove(current_user)
|
||||
GroupActionLogger.new(current_user, group).log_remove_user_from_group(current_user)
|
||||
end
|
||||
end
|
||||
|
||||
MAX_NOTIFIED_OWNERS ||= 20
|
||||
|
||||
def request_membership
|
||||
|
Reference in New Issue
Block a user