debian-mirror-gitlab/app/workers/disallow_two_factor_for_subgroups_worker.rb
2021-11-11 11:23:49 +05:30

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