Module: Upkeep::Rails::ActivationToken

Defined in:
lib/upkeep/rails/activation_token.rb

Constant Summary collapse

PURPOSE =
"upkeep-subscription-activation"

Class Method Summary collapse

Class Method Details

.fallback_secretObject



50
51
52
# File 'lib/upkeep/rails/activation_token.rb', line 50

def fallback_secret
  @fallback_secret ||= SecureRandom.hex(64)
end

.fallback_verifierObject



46
47
48
# File 'lib/upkeep/rails/activation_token.rb', line 46

def fallback_verifier
  @fallback_verifier ||= ActiveSupport::MessageVerifier.new(fallback_secret)
end

.generate(subscription) ⇒ Object



13
14
15
16
17
18
19
20
# File 'lib/upkeep/rails/activation_token.rb', line 13

def generate(subscription)
  subscription_id = subscription.respond_to?(:id) ? subscription.id : subscription
  verifier.generate(
    { "subscription_id" => subscription_id.to_s },
    purpose: PURPOSE,
    expires_in: Upkeep::Rails.configuration.activation_token_expires_in
  )
end

.rails_message_verifierObject



37
38
39
40
41
42
43
44
# File 'lib/upkeep/rails/activation_token.rb', line 37

def rails_message_verifier
  return unless defined?(::Rails) && ::Rails.respond_to?(:application)
  return unless ::Rails.application.respond_to?(:message_verifier)

  ::Rails.application.message_verifier(PURPOSE)
rescue StandardError
  nil
end

.token_subscription_id(payload) ⇒ Object



27
28
29
30
31
# File 'lib/upkeep/rails/activation_token.rb', line 27

def token_subscription_id(payload)
  return unless payload.respond_to?(:[])

  payload["subscription_id"] || payload[:subscription_id]
end

.valid_for_subscription?(token, subscription_id) ⇒ Boolean

Returns:

  • (Boolean)


22
23
24
25
# File 'lib/upkeep/rails/activation_token.rb', line 22

def valid_for_subscription?(token, subscription_id)
  payload = verifier.verified(token.to_s, purpose: PURPOSE)
  token_subscription_id(payload) == subscription_id.to_s
end

.verifierObject



33
34
35
# File 'lib/upkeep/rails/activation_token.rb', line 33

def verifier
  rails_message_verifier || fallback_verifier
end