Sha256: 53334908e7ce09abf502464706a770be10957a8127743b84304dce21e3d393c4

Contents?: true

Size: 1003 Bytes

Versions: 38

Compression:

Stored size: 1003 Bytes

Contents

module DiscoApp::Concerns::AppProxyController
  extend ActiveSupport::Concern

  included do
    before_action :verify_proxy_signature
    before_action :shopify_shop
    after_action :add_liquid_header

    rescue_from ActiveRecord::RecordNotFound do |exception|
      render_error 404
    end
  end

  private

    def verify_proxy_signature
      unless proxy_signature_is_valid?
        head :unauthorized
      end
    end

    def proxy_signature_is_valid?
      return true if Rails.env.development? and DiscoApp.configuration.skip_proxy_verification?
      DiscoApp::ProxyService.proxy_signature_is_valid?(request.query_string, ShopifyApp.configuration.secret)
    end

    def shopify_shop
      @shop = DiscoApp::Shop.find_by_shopify_domain!(params[:shop])
    end

    def add_liquid_header
      response.headers['Content-Type'] = 'application/liquid'
    end

    def render_error(status)
      add_liquid_header
      render "disco_app/proxy_errors/#{status}", status: status
    end

end

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
disco_app-0.8.8 app/controllers/disco_app/concerns/app_proxy_controller.rb
disco_app-0.8.9 app/controllers/disco_app/concerns/app_proxy_controller.rb
disco_app-0.9.0 app/controllers/disco_app/concerns/app_proxy_controller.rb
disco_app-0.9.1 app/controllers/disco_app/concerns/app_proxy_controller.rb
disco_app-0.9.2 app/controllers/disco_app/concerns/app_proxy_controller.rb
disco_app-0.9.3 app/controllers/disco_app/concerns/app_proxy_controller.rb
disco_app-0.9.4 app/controllers/disco_app/concerns/app_proxy_controller.rb
disco_app-0.9.5 app/controllers/disco_app/concerns/app_proxy_controller.rb
disco_app-0.9.6 app/controllers/disco_app/concerns/app_proxy_controller.rb
disco_app-0.9.7 app/controllers/disco_app/concerns/app_proxy_controller.rb
disco_app-0.9.8 app/controllers/disco_app/concerns/app_proxy_controller.rb
disco_app-0.9.9 app/controllers/disco_app/concerns/app_proxy_controller.rb
disco_app-0.9.10 app/controllers/disco_app/concerns/app_proxy_controller.rb
disco_app-0.9.11 app/controllers/disco_app/concerns/app_proxy_controller.rb
disco_app-0.10.0 app/controllers/disco_app/concerns/app_proxy_controller.rb
disco_app-0.10.1 app/controllers/disco_app/concerns/app_proxy_controller.rb
disco_app-0.10.2 app/controllers/disco_app/concerns/app_proxy_controller.rb
disco_app-0.10.3 app/controllers/disco_app/concerns/app_proxy_controller.rb
disco_app-0.10.4 app/controllers/disco_app/concerns/app_proxy_controller.rb
disco_app-0.10.5 app/controllers/disco_app/concerns/app_proxy_controller.rb