Sha256: f91d87a7be4c88bfbabb5d6f0e8d9f672c7d0b954ce6c5814a38cefd62270990

Contents?: true

Size: 1.47 KB

Versions: 6

Compression:

Stored size: 1.47 KB

Contents

module Blogelator
  module Admin
    module Auth
      extend ActiveSupport::Concern

      included do
        check_authorization
        rescue_from CanCan::AccessDenied do |exception|
          unauthorized(exception)
        end
      end

      def blogelator_current_user
        respond_to?(:current_user) ? current_user : nil
      end

      def current_ability
        @current_ability ||= Blogelator::Ability.new(blogelator_current_user)
      end

      def devise_resource_name
        Blogelator.user_class.underscore.gsub('/', '_')
      end

      def login_redirect_path
        # Try to use Devise's new session path or use the app's root path
        devise_new_session_path = "new_#{devise_resource_name}_session_path"
        if main_app.respond_to?(devise_new_session_path)
          main_app.send(devise_new_session_path)
        else
          main_app.root_path
        end
      end

      def redirect_back_or_default(default)
        redirect_to(session["#{devise_resource_name}_return_to"] || default)
        session["#{devise_resource_name}_return_to"] = nil
      end

      def store_location
        session["#{devise_resource_name}_return_to"] = request.fullpath.gsub('//', '/')
      end

      def unauthorized(exception)
        if blogelator_current_user
          redirect_to main_app.root_url, alert: exception.message
        else
          store_location
          redirect_to login_redirect_path, alert: exception.message
        end
      end

    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
blogelator-0.2.5 app/controllers/concerns/blogelator/admin/auth.rb
blogelator-0.2.4 app/controllers/concerns/blogelator/admin/auth.rb
blogelator-0.2.3 app/controllers/concerns/blogelator/admin/auth.rb
blogelator-0.2.2 app/controllers/concerns/blogelator/admin/auth.rb
blogelator-0.2.1 app/controllers/concerns/blogelator/admin/auth.rb
blogelator-0.1.6 app/controllers/concerns/blogelator/admin/auth.rb