Sha256: 7ffce19ed576fcec20baea3a086e0647e6ced771461886aec88574aa3a9c52c7

Contents?: true

Size: 1.25 KB

Versions: 12

Compression:

Stored size: 1.25 KB

Contents

module Workarea
  decorate Visit, with: 'storefront_api' do
    def api?
      return @api if defined?(@api)
      @api = Workarea.config.is_api_visit.call(request)
    end

    def cookies
      api? ? {} : super
    end

    def session
      api? ? {} : super
    end

    def logged_in?
      return super unless api?

      regex = ActionController::HttpAuthentication::Token::TOKEN_REGEX
      request.authorization.to_s[regex].present?
    end

    def current_email
      return super unless api?
      return request.params['email'] unless logged_in?
      return @current_email if defined? @current_email

      @current_email = current_user&.email
    end

    def current_user
      token, options = ActionController::HttpAuthentication::Token.token_and_options(request)
      @current_user ||= Api::Storefront::Authentication.find_user(token, options)
    end

    def sessions
      api? ? request.params['sessions'].to_i : super
    end

    def current_metrics_id
      return super unless api?

      return @current_metrics_id if defined?(@current_metrics_id)
      @current_metrics_id = current_email.presence || request.params['session_id']
    end

    def current_metrics_id=(value)
      return super unless api?
      # Unsupported in the API
    end
  end
end

Version data entries

12 entries across 12 versions & 2 rubygems

Version Path
workarea-api-4.5.6 storefront/lib/workarea/api/storefront/visit.decorator
workarea-api-storefront-4.5.6 lib/workarea/api/storefront/visit.decorator
workarea-api-4.5.5 storefront/lib/workarea/api/storefront/visit.decorator
workarea-api-storefront-4.5.5 lib/workarea/api/storefront/visit.decorator
workarea-api-4.5.4 storefront/lib/workarea/api/storefront/visit.decorator
workarea-api-storefront-4.5.4 lib/workarea/api/storefront/visit.decorator
workarea-api-4.5.3 storefront/lib/workarea/api/storefront/visit.decorator
workarea-api-storefront-4.5.3 lib/workarea/api/storefront/visit.decorator
workarea-api-4.5.2 storefront/lib/workarea/api/storefront/visit.decorator
workarea-api-storefront-4.5.2 lib/workarea/api/storefront/visit.decorator
workarea-api-4.5.0 storefront/lib/workarea/api/storefront/visit.decorator
workarea-api-storefront-4.5.0 lib/workarea/api/storefront/visit.decorator