Sha256: 422b715d0beb3d5858480cb266732060a0265a8e3736deba0e6a1289806f5064

Contents?: true

Size: 940 Bytes

Versions: 2

Compression:

Stored size: 940 Bytes

Contents

module Minimalist
  module Authorization
    extend ActiveSupport::Concern
    
    included do
      helper_method :current_user, :logged_in?, :authorized?
    end

    private

    def current_user
      @current_user ||= (get_user_from_session || User.guest)
    end

    def get_user_from_session
      User.find_by_id(session[:user_id]) if session[:user_id]
    end

    def authorization_required
      authorized? || access_denied
    end

    def authorized?(action = action_name, resource = controller_name)
      logged_in?
    end

    def logged_in?
      !current_user.is_guest?
    end

    def access_denied
      store_location if request.method.to_s.downcase == 'get' && !logged_in?
      redirect_to new_session_path
    end

    def store_location
      session['return_to'] = request.fullpath
    end

    def redirect_back_or_default(default)
      redirect_to(session.delete('return_to') || default)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
minimalist_authentication-1.1.0 lib/minimalist/authorization.rb
minimalist_authentication-1.0.0 lib/minimalist/authorization.rb