Sha256: 6add5b7fcd4ad328c1a61a449a0db181ff65890f0c843ca03e24ec6901a01cb4

Contents?: true

Size: 1.39 KB

Versions: 8

Compression:

Stored size: 1.39 KB

Contents

module Clearance
  module Authorization
    extend ActiveSupport::Concern

    included do
      hide_action :authorize, :deny_access
    end

    def authorize
      unless signed_in?
        deny_access
      end
    end

    def deny_access(flash_message = nil)
      respond_to do |format|
        format.any(:js, :json, :xml) { head :unauthorized }
        format.any { redirect_request(flash_message) }
      end
    end

    protected

    def redirect_request(flash_message)
      store_location

      if flash_message
        flash[:notice] = flash_message
      end

      if signed_in?
        redirect_to url_after_denied_access_when_signed_in
      else
        redirect_to url_after_denied_access_when_signed_out
      end
    end

    def clear_return_to
      session[:return_to] = nil
    end

    def store_location
      if request.get?
        session[:return_to] = request.original_fullpath
      end
    end

    def redirect_back_or(default)
      redirect_to(return_to || default)
      clear_return_to
    end

    def return_to
      if return_to_url
        uri = URI.parse(return_to_url)
        "#{uri.path}?#{uri.query}".chomp('?')
      end
    end

    def return_to_url
      session[:return_to]
    end

    def url_after_denied_access_when_signed_in
      Clearance.configuration.redirect_url
    end

    def url_after_denied_access_when_signed_out
      sign_in_url
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
clearance-1.6.1 lib/clearance/authorization.rb
clearance-1.6.0 lib/clearance/authorization.rb
clearance-1.5.1 lib/clearance/authorization.rb
clearance-1.5.0 lib/clearance/authorization.rb
clearance-1.4.3 lib/clearance/authorization.rb
clearance-1.4.2 lib/clearance/authorization.rb
clearance-1.4.1 lib/clearance/authorization.rb
clearance-1.4.0 lib/clearance/authorization.rb