Sha256: 1944e082fd44b7b2b9cd54e087c6663576fd9510dabde6c8426cda95ab87ba46

Contents?: true

Size: 1.35 KB

Versions: 11

Compression:

Stored size: 1.35 KB

Contents

module Blocky
  module Auth
    extend ActiveSupport::Concern

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

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

    def current_ability
      @current_ability ||= Blocky::Ability.new(blocky_current_user)
    end

    def devise_resource_name
      Blocky.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 blocky_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

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
blocky-0.0.11 app/controllers/concerns/blocky/auth.rb
blocky-0.0.10 app/controllers/concerns/blocky/auth.rb
blocky-0.0.9 app/controllers/concerns/blocky/auth.rb
blocky-0.0.8 app/controllers/concerns/blocky/auth.rb
blocky-0.0.7 app/controllers/concerns/blocky/auth.rb
blocky-0.0.6 app/controllers/concerns/blocky/auth.rb
blocky-0.0.5 app/controllers/concerns/blocky/auth.rb
blocky-0.0.4 app/controllers/concerns/blocky/auth.rb
blocky-0.0.3 app/controllers/concerns/blocky/auth.rb
blocky-0.0.2 app/controllers/concerns/blocky/auth.rb
blocky-0.0.1 app/controllers/concerns/blocky/auth.rb