FEATURE: Allow group owners promote more owners (#19768)

This change allows group owners (in addition to admins) to promote other members to owners.
This commit is contained in:
Ted Johansson
2023-01-11 16:43:18 +08:00
committed by GitHub
parent 17daf077e2
commit d2e9ea6193
15 changed files with 227 additions and 187 deletions

View File

@ -385,6 +385,32 @@ class GroupsController < ApplicationController
end
end
def add_owners
group = Group.find_by(id: params.require(:id))
raise Discourse::NotFound unless group
return can_not_modify_automatic if group.automatic
guardian.ensure_can_edit_group!(group)
users = users_from_params
group_action_logger = GroupActionLogger.new(current_user, group)
users.each do |user|
if !group.users.include?(user)
group.add(user)
group_action_logger.log_add_user_to_group(user)
end
group.group_users.where(user_id: user.id).update_all(owner: true)
group_action_logger.log_make_user_group_owner(user)
group.notify_added_to_group(user, owner: true) if params[:notify_users].to_s == "true"
end
group.restore_user_count!
render json: success_json.merge!(usernames: users.pluck(:username))
end
def join
ensure_logged_in
unless current_user.staff?
@ -667,6 +693,12 @@ class GroupsController < ApplicationController
end
end
protected
def can_not_modify_automatic
render_json_error(I18n.t("groups.errors.can_not_modify_automatic"))
end
private
def add_user_to_group(group, user, notify = false)