Sha256: 76e3faed724de88b6044750912ff85260a450c0aa014c069003419a9cc41009b

Contents?: true

Size: 1.23 KB

Versions: 2

Compression:

Stored size: 1.23 KB

Contents

module ShoppyCartus
  class ApplicationController < ShoppyCartus.parent_controller.constantize
    before_action :set_order, :set_locale, :current_ability

    [CanCan::AccessDenied, ActiveRecord::RecordNotFound, ActionController::RoutingError].each do |error|
      rescue_from error do |exception|
        redirect_to order_items_path, alert: exception.message
      end
    end

    define_method "authenticate_#{ShoppyCartus.user_class.downcase}!" do
      return if current_user
      redirect_to order_items_path, alert: t('checkout.authorize')
    end

    def current_order
      ShoppyCartus::Order.find_by(id: session[:order_id]) || ShoppyCartus::Order.active_order_for_user(current_user) || new_session_order
    end

    def current_ability
      @current_ability ||= Ability.new(current_user, current_order)
    end

    def set_locale
      I18n.locale = params[:locale] || I18n.default_locale
    end

    def default_url_options(*)
      { locale: I18n.locale == I18n.default_locale ? nil : I18n.locale }
    end

    private

    def set_order
      @order ||= current_order.decorate
    end

    def new_session_order
      order = ShoppyCartus::Order.create(user: current_user)
      session[:order_id] = order.id
      order
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
shoppy_cartus-0.1.2 app/controllers/shoppy_cartus/application_controller.rb
shoppy_cartus-0.1.1 app/controllers/shoppy_cartus/application_controller.rb