Class: Legion::Extensions::Identity::Entra::Delegated::Actor::TokenRefresher

Inherits:
Actors::Every
  • Object
show all
Defined in:
lib/legion/extensions/identity/entra/delegated/actors/token_refresher.rb

Constant Summary collapse

DEFAULT_REFRESH_INTERVAL =
900

Instance Method Summary collapse

Instance Method Details

#check_subtask?Boolean

Returns:

  • (Boolean)


15
# File 'lib/legion/extensions/identity/entra/delegated/actors/token_refresher.rb', line 15

def check_subtask?  = false

#enabled?Boolean

rubocop:disable Legion/Extension/ActorEnabledSideEffects

Returns:

  • (Boolean)


24
25
26
# File 'lib/legion/extensions/identity/entra/delegated/actors/token_refresher.rb', line 24

def enabled? # rubocop:disable Legion/Extension/ActorEnabledSideEffects
  true
end

#generate_task?Boolean

Returns:

  • (Boolean)


16
# File 'lib/legion/extensions/identity/entra/delegated/actors/token_refresher.rb', line 16

def generate_task?  = false

#manualObject



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/legion/extensions/identity/entra/delegated/actors/token_refresher.rb', line 28

def manual
  log.debug('Delegated TokenRefresher tick')
  unless Legion::Extensions::Identity::Entra::Helpers::TokenManager.authenticated?(:delegated)
    log.debug('No active delegated token, skipping refresh')
    return
  end

  data = Legion::Extensions::Identity::Entra::Helpers::TokenManager.token_data(:delegated, refresh: false)
  if data && !Legion::Extensions::Identity::Entra::Helpers::TokenManager.expired?(data)
    log.debug('Delegated token still valid')
    return
  end

  log.info('Delegated token nearing expiry, refreshing')
  refreshed = Legion::Extensions::Identity::Entra::Helpers::TokenManager.token_data(:delegated, refresh: true)
  if refreshed && !Legion::Extensions::Identity::Entra::Helpers::TokenManager.expired?(refreshed)
    Legion::Extensions::Identity::Entra::Client.reset!(pattern: :delegated)
    log.info('Delegated token refreshed successfully')
  else
    log.warn('Delegated token refresh failed, attempting browser re-auth')
    attempt_browser_reauth
  end
rescue StandardError => e
  log.error("Delegated TokenRefresher: #{e.message}")
end

#run_now?Boolean

Returns:

  • (Boolean)


17
# File 'lib/legion/extensions/identity/entra/delegated/actors/token_refresher.rb', line 17

def run_now?        = false

#runner_classObject



12
# File 'lib/legion/extensions/identity/entra/delegated/actors/token_refresher.rb', line 12

def runner_class    = self.class

#runner_functionObject



13
# File 'lib/legion/extensions/identity/entra/delegated/actors/token_refresher.rb', line 13

def runner_function = 'manual'

#timeObject



19
20
21
22
# File 'lib/legion/extensions/identity/entra/delegated/actors/token_refresher.rb', line 19

def time
  Legion::Settings.dig(:identity, :entra, :delegated, :token, :refresh_interval) ||
    DEFAULT_REFRESH_INTERVAL
end

#use_runner?Boolean

Returns:

  • (Boolean)


14
# File 'lib/legion/extensions/identity/entra/delegated/actors/token_refresher.rb', line 14

def use_runner?     = false