Sha256: 435d1d491ab1c2943af5f0055591117cef41488caad783b2b014f6400ced3091

Contents?: true

Size: 1.64 KB

Versions: 1

Compression:

Stored size: 1.64 KB

Contents

module Ecm::UserArea
  class Sessions::BaseController < Ecm::UserArea::Configuration.base_controller.constantize
    include Controller::ResourceConcern
    include Controller::ResourceInflectionsConcern
    include Controller::ResourceUrlsConcern
    include Controller::RestActionsConcern
    include Controller::RedirectBackConcern

    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 : "/#{I18n.locale}"
    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_hash
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ecm_user_area2-1.2.6 app/controllers/ecm/user_area/sessions/base_controller.rb