Sha256: d5f03fb670a40900264934cadfd90ee4e4182bdf33d44da92d12bebf5b9fcb01

Contents?: true

Size: 1.46 KB

Versions: 138

Compression:

Stored size: 1.46 KB

Contents

# frozen_string_literal: true

# This class provides the old behaviour for finding a matching Spree::Store
# based on a request.
#
# To enable this, somewhere inside config/initializers/ add
#
#     Spree::Config.current_store_selector_class = Spree::StoreSelector::Legacy
#
# This classes behaviour is somewhat complicated and has issues, which is why
# it has been replaced with Spree::StoreSelector::ByServerName by default.
#
# It will:
# * Find a "store_key"
#   * from the HTTP_SPREE_STORE header, if it exists
#   * or the server's domain name if HTTP_SPREE_STORE isn't set
# * Find a store, using the first match of:
#   * having a code matching the store_key exactly
#   * having a url which contains the store_key anywhere as a substring
#   * has default set to true
#
module Spree
  module StoreSelector
    class Legacy
      def initialize(request)
        @request = request
      end

      # Chooses the current store based on a request.
      # Checks request headers for HTTP_SPREE_STORE and falls back to
      # looking up by the requesting server's name.
      # @return [Spree::Store]
      def store
        current_store =
          if store_key
            Spree::Store.find_by(code: store_key) ||
              Store.where("url like ?", "%#{store_key}%").first
          end

        current_store || Spree::Store.default
      end

      private

      def store_key
        @request.headers['HTTP_SPREE_STORE'] || @request.env['SERVER_NAME']
      end
    end
  end
end

Version data entries

138 entries across 138 versions & 2 rubygems

Version Path
solidus_core-4.5.1 app/models/spree/store_selector/legacy.rb
solidus_core-4.5.0 app/models/spree/store_selector/legacy.rb
solidus_core-4.3.6 app/models/spree/store_selector/legacy.rb
solidus_core-4.2.5 app/models/spree/store_selector/legacy.rb
solidus_core-4.1.6 app/models/spree/store_selector/legacy.rb
solidus_core-4.4.2 app/models/spree/store_selector/legacy.rb
solidus_core-4.4.1 app/models/spree/store_selector/legacy.rb
solidus_core-4.4.0 app/models/spree/store_selector/legacy.rb
solidus_core-4.3.4 app/models/spree/store_selector/legacy.rb
solidus_core-4.2.4 app/models/spree/store_selector/legacy.rb
solidus_core-4.1.5 app/models/spree/store_selector/legacy.rb
solidus_core-4.3.3 app/models/spree/store_selector/legacy.rb
solidus_core-4.3.2 app/models/spree/store_selector/legacy.rb
solidus_core-4.1.4 app/models/spree/store_selector/legacy.rb
solidus_core-4.3.1 app/models/spree/store_selector/legacy.rb
solidus_core-4.3.0 app/models/spree/store_selector/legacy.rb
solidus_core-4.2.3 app/models/spree/store_selector/legacy.rb
solidus_core-4.1.3 app/models/spree/store_selector/legacy.rb
solidus_core-4.0.4 app/models/spree/store_selector/legacy.rb
solidus_core-3.4.6 app/models/spree/store_selector/legacy.rb