Module: Spree::Api::V3::TestingSupport

Defined in:
lib/spree/api/testing_support/v3/base.rb

Class Method Summary collapse

Class Method Details

.generate_jwt(user, expiration: 1.hour.to_i, audience: Spree::Api::V3::JwtAuthentication::JWT_AUDIENCE_STORE) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/spree/api/testing_support/v3/base.rb', line 6

def self.generate_jwt(user, expiration: 1.hour.to_i, audience: Spree::Api::V3::JwtAuthentication::JWT_AUDIENCE_STORE)
  user_type = user.is_a?(Spree.admin_user_class) ? 'admin' : 'customer'
  payload = {
    user_id: user.id,
    user_type: user_type,
    jti: SecureRandom.uuid,
    iss: Spree::Api::V3::JwtAuthentication::JWT_ISSUER,
    aud: audience,
    exp: Time.current.to_i + expiration
  }
  secret = Spree::Api::Config[:jwt_secret_key].presence ||
           Rails.application.credentials.jwt_secret_key ||
           ENV['JWT_SECRET_KEY'] ||
           Rails.application.secret_key_base
  JWT.encode(payload, secret, 'HS256')
end