Class: Legion::Auth::TokenManager

Inherits:
Object
  • Object
show all
Defined in:
lib/legion/auth/token_manager.rb

Defined Under Namespace

Classes: TokenExpiredError

Instance Method Summary collapse

Constructor Details

#initialize(provider:) ⇒ TokenManager

Returns a new instance of TokenManager.



11
12
13
# File 'lib/legion/auth/token_manager.rb', line 11

def initialize(provider:)
  @provider = provider
end

Instance Method Details

#ensure_valid_tokenObject



40
41
42
43
44
# File 'lib/legion/auth/token_manager.rb', line 40

def ensure_valid_token
  return secret[:"#{@provider}_access_token"] if token_valid?

  refresh_access_token
end

#mark_revoked!Object



50
51
52
# File 'lib/legion/auth/token_manager.rb', line 50

def mark_revoked!
  secret[:"#{@provider}_token_revoked"] = true
end

#revoked?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/legion/auth/token_manager.rb', line 46

def revoked?
  secret[:"#{@provider}_token_revoked"] == true
end

#store_tokens(access_token:, expires_in:, refresh_token: nil, scope: nil) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/legion/auth/token_manager.rb', line 32

def store_tokens(access_token:, expires_in:, refresh_token: nil, scope: nil)
  secret[:"#{@provider}_access_token"]     = access_token
  secret[:"#{@provider}_refresh_token"]    = refresh_token if refresh_token
  secret[:"#{@provider}_token_ttl"]        = expires_in
  secret[:"#{@provider}_token_scope"]      = scope if scope
  secret[:"#{@provider}_token_expires_at"] = (Time.now + expires_in).iso8601
end

#token_valid?Boolean

Returns:

  • (Boolean)


15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/legion/auth/token_manager.rb', line 15

def token_valid?
  access_token = secret[:"#{@provider}_access_token"]
  return false unless access_token

  expires_at_str = secret[:"#{@provider}_token_expires_at"]
  return false unless expires_at_str

  expires_at = Time.parse(expires_at_str)
  ttl = secret[:"#{@provider}_token_ttl"]

  expires_at > if ttl
                 Time.now + (ttl * 0.25)
               else
                 Time.now + 300
               end
end