Sha256: b4fdd5a7e2c5a6eed661f7668174c6bdc9b0aa729774332ec4215ac70f643631

Contents?: true

Size: 1.55 KB

Versions: 1

Compression:

Stored size: 1.55 KB

Contents

module Spree
  module Api
    module V2
      module Storefront
        module Account
          class CreditCardsController < ::Spree::Api::V2::BaseController
            before_action :require_spree_current_user

            def index
              render_serialized_payload { serialize_collection(resource) }
            end

            def show
              render_serialized_payload { serialize_resource(resource) }
            end

            private

            def resource
              dependencies[:resource_finder].new.execute(scope: scope, params: params)
            end

            def dependencies
              {
                resource_finder: Spree::CreditCards::Find,
                collection_serializer: Spree::V2::Storefront::CreditCardSerializer,
                resource_serializer: Spree::V2::Storefront::CreditCardSerializer
              }
            end

            def serialize_collection(collection)
              dependencies[:collection_serializer].new(
                collection,
                include: resource_includes,
                fields: sparse_fields
              ).serializable_hash
            end

            def serialize_resource(resource)
              dependencies[:resource_serializer].new(
                resource,
                include: resource_includes,
                fields: sparse_fields
              ).serializable_hash
            end

            def scope
              spree_current_user.credit_cards.accessible_by(current_ability, :read)
            end
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
spree_api-3.7.0.rc2 app/controllers/spree/api/v2/storefront/account/credit_cards_controller.rb