class Lucid::Shopify::Session::DecodeSessionToken

Constants

Error

Public Instance Methods

call(token) click to toggle source

@param token [String]

@return [String] the *.myshopify.com domain of the authenticated shop

@raise [Error]

# File lib/lucid/shopify/session/decode_session_token.rb, line 17
def call(token)
  payload, _ = JWT.decode(token, Shopify.config.shared_secret, true, algorithm: 'HS256')

  raise Error unless valid?(payload)

  myshopify_domain(payload)
rescue JWT::DecodeError
  raise Error
end

Private Instance Methods

myshopify_domain(payload) click to toggle source

@param payload [Hash]

@return [String]

# File lib/lucid/shopify/session/decode_session_token.rb, line 30
        def myshopify_domain(payload)
  payload['dest'].sub('https://', '')
end
valid?(payload) click to toggle source

@param payload [Hash]

@return [Boolean]

# File lib/lucid/shopify/session/decode_session_token.rb, line 37
          def valid?(payload)
    return false unless payload['aud'] == Shopify.config.api_key
    return false unless payload['iss'].start_with?(payload['dest'])
    return true
end