gitlab-org--gitlab-foss/app/workers/disallow_two_factor_for_sub...

35 lines
853 B
Ruby

# frozen_string_literal: true
class DisallowTwoFactorForSubgroupsWorker
include ApplicationWorker
data_consistency :always
sidekiq_options retry: 3
include ExceptionBacktrace
INTERVAL = 2.seconds.to_i
feature_category :subgroups
idempotent!
def perform(group_id)
begin
group = Group.find(group_id)
rescue ActiveRecord::RecordNotFound
return
end
# rubocop: disable CodeReuse/ActiveRecord
subgroups = group.descendants.where(require_two_factor_authentication: true) # rubocop: disable CodeReuse/ActiveRecord
subgroups.find_each(batch_size: 100).with_index do |subgroup, index|
delay = index * INTERVAL
with_context(namespace: subgroup) do
DisallowTwoFactorForGroupWorker.perform_in(delay, subgroup.id)
end
end
# rubocop: enable CodeReuse/ActiveRecord
end
end