Sha256: 90652d68552d8f4ed469d13dbe04747aec2e2d759f373d52d18a199db861b4d0

Contents?: true

Size: 1.16 KB

Versions: 6

Compression:

Stored size: 1.16 KB

Contents

# frozen_string_literal: true

module ShopifyApp
  module WithShopifyIdToken
    extend ActiveSupport::Concern

    def shopify_id_token
      return @shopify_id_token if defined?(@shopify_id_token)

      @shopify_id_token = id_token_from_authorization_header || id_token_from_url_param
    end

    def jwt_payload
      return @jwt_payload if defined?(@jwt_payload)

      @jwt_payload = shopify_id_token.present? ? ShopifyAPI::Auth::JwtPayload.new(shopify_id_token) : nil
    end

    def jwt_shopify_domain
      return @jwt_shopify_domain if defined?(@jwt_shopify_domain)

      @jwt_shopify_domain = if jwt_payload.present?
        ShopifyApp::Utils.sanitize_shop_domain(jwt_payload.shopify_domain)
      end
    end

    def jwt_shopify_user_id
      jwt_payload&.shopify_user_id
    end

    def jwt_expire_at
      expire_at = jwt_payload&.expire_at
      return unless expire_at

      expire_at - 5.seconds # 5s gap to start fetching new token in advance
    end

    private

    def id_token_from_authorization_header
      request.headers["HTTP_AUTHORIZATION"]&.match(/^Bearer (.+)$/)&.[](1)
    end

    def id_token_from_url_param
      params["id_token"]
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
shopify_app-22.5.2 lib/shopify_app/controller_concerns/with_shopify_id_token.rb
shopify_app-22.5.1 lib/shopify_app/controller_concerns/with_shopify_id_token.rb
shopify_app-22.5.0 lib/shopify_app/controller_concerns/with_shopify_id_token.rb
shopify_app-22.4.0 lib/shopify_app/controller_concerns/with_shopify_id_token.rb
shopify_app-22.3.1 lib/shopify_app/controller_concerns/with_shopify_id_token.rb
shopify_app-22.3.0 lib/shopify_app/controller_concerns/with_shopify_id_token.rb