Sha256: 9867093e61f67b80e3f3e316e354ca7642652c954165158490eea5fd2a7ed4d8

Contents?: true

Size: 1.07 KB

Versions: 5

Compression:

Stored size: 1.07 KB

Contents

module Comable
  module SigninAction
    class << self
      def prepended(base)
        base.instance_eval do
          before_filter :ensure_signed_in_or_guest, except: [:signin, :guest]

          helper_method :resource
          helper_method :resource_name
          helper_method :devise_mapping
        end
      end
    end

    def guest
      if @order.state?(:cart) ? @order.next_state : @order.save
        redirect_to next_order_path
      else
        render :signin
      end
    end

    private

    def ensure_signed_in_or_guest
      return if @order.email
      store_location
      redirect_to comable.signin_order_path
    end

    def resource
      current_customer
    end

    def resource_name
      :customer
    end

    def devise_mapping
      Devise.mappings[resource_name]
    end

    # orderride OrdersController#order_params
    def order_params
      return super unless action_name.in? %w( signin guest )
      order_params_for_signin
    end

    def order_params_for_signin
      params.fetch(:order, {}).permit(
        :email
      )
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
comable_frontend-0.3.4 app/controllers/concerns/comable/signin_action.rb
comable_frontend-0.3.3 app/controllers/concerns/comable/signin_action.rb
comable_frontend-0.3.2 app/controllers/concerns/comable/signin_action.rb
comable_frontend-0.3.1 app/controllers/concerns/comable/signin_action.rb
comable_frontend-0.3.0 app/controllers/concerns/comable/signin_action.rb