1# frozen_string_literal: true
2
3class AuthorizedKeysWorker
4  include ApplicationWorker
5
6  data_consistency :always
7
8  sidekiq_options retry: 3
9
10  PERMITTED_ACTIONS = %w[add_key remove_key].freeze
11
12  feature_category :source_code_management
13  urgency :high
14  weight 2
15  idempotent!
16  loggable_arguments 0
17
18  def perform(action, *args)
19    return unless Gitlab::CurrentSettings.authorized_keys_enabled?
20
21    case action.to_s
22    when 'add_key'
23      authorized_keys.add_key(*args)
24    when 'remove_key'
25      authorized_keys.remove_key(*args)
26    else
27      raise "Unknown action: #{action.inspect}"
28    end
29  end
30
31  private
32
33  def authorized_keys
34    @authorized_keys ||= Gitlab::AuthorizedKeys.new
35  end
36end
37