Sha256: ad39bc90cd4bc481d9efeed8b8b7525ae060a889e9a22bae0fffe8cc34869280

Contents?: true

Size: 1.86 KB

Versions: 7

Compression:

Stored size: 1.86 KB

Contents

module Ecm
  module UserArea
    module Sessions
      class BaseController < Ecm::UserArea::Configuration.base_controller.constantize
        include ResourcesController::Resources
        include ResourcesController::ResourceInflections
        include ResourcesController::RestResourceUrls
        include ResourcesController::RestActions
        include ResourcesController::LocationHistory

        skip_before_action :authenticate_user!, only: [:new, :create], raise: false

        def new
          @session = initialize_resource
          respond_with @session
        end

        def create
          @session = resource_class.new(permitted_params)

          if @session.save
            flash[:notice] = I18n.t('messages.success.ecm_user_area.signed_in') unless request.xhr?
            if Configuration.force_after_sign_in_url
              redirect_to(after_sign_in_url)
            else
              redirect_back_or(after_sign_in_url)
            end
            return
          else
            render action: :new
          end
        end

        def destroy
          current_session(resource_class.name.demodulize.underscore.to_sym).destroy
          flash[:notice] = I18n.t('messages.success.ecm_user_area.signed_out') unless request.xhr?
          redirect_to after_sign_out_url
        end

        def self.resource_class
          fail 'please define self.session_class in your controller.'
        end

        private

        def after_sign_in_url
          defined?(super) ? super : main_app.root_path
        end

        def permitted_params
          if Rails.version < '5'
            params.require(resource_class.name.demodulize.underscore.tr('/', '_')).permit(:email, :password)
          else
            params.require(resource_class.name.demodulize.underscore.tr('/', '_')).permit(:email, :password).to_h
          end
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
ecm_user_area2-3.1.2 app/controllers/ecm/user_area/sessions/base_controller.rb
ecm_user_area2-3.1.1 app/controllers/ecm/user_area/sessions/base_controller.rb
ecm_user_area2-3.1.0 app/controllers/ecm/user_area/sessions/base_controller.rb
ecm_user_area2-3.0.3 app/controllers/ecm/user_area/sessions/base_controller.rb
ecm_user_area2-3.0.2 app/controllers/ecm/user_area/sessions/base_controller.rb
ecm_user_area2-3.0.1 app/controllers/ecm/user_area/sessions/base_controller.rb
ecm_user_area2-3.0.0 app/controllers/ecm/user_area/sessions/base_controller.rb