Class: SpreeCmCommissioner::CrossAppHandoffTokens::Encode

Inherits:
Object
  • Object
show all
Includes:
Spree::ServiceModule::Base
Defined in:
app/services/spree_cm_commissioner/cross_app_handoff_tokens/encode.rb

Constant Summary collapse

TTL =
1.minute
ALGORITHM =
'HS256'.freeze
PURPOSES =
%w[operator_sign_in organizer_web_session].freeze

Instance Method Summary collapse

Instance Method Details

#call(user:, purpose:) ⇒ Object



25
26
27
28
29
30
31
32
33
34
# File 'app/services/spree_cm_commissioner/cross_app_handoff_tokens/encode.rb', line 25

def call(user:, purpose:)
  return failure(nil, "invalid purpose: #{purpose}") unless PURPOSES.include?(purpose.to_s)

  bump_version!(user)

  expires_at = TTL.from_now
  payload = { sub: user.id, purpose: purpose.to_s, ver: user.cross_app_handoff_version, exp: expires_at.to_i }

  success(token: JWT.encode(payload, user.secure_token, ALGORITHM), expires_at: expires_at)
end