Sha256: ce95a32b38cdd7336d5c6ad1506d101a50a664ac77b275c290a061234024d400

Contents?: true

Size: 1.3 KB

Versions: 1

Compression:

Stored size: 1.3 KB

Contents

module Authorizme
  module ForControllers
    extend ActiveSupport::Concern
    
    included do
    end

    module ClassMethods
      def require_user params = nil
        before_filter :require_user, params
      end
    end

    def current_user
      return @current_user if defined? @current_users
      @current_user ||= User.find session[:user_id] if session[:user_id]
    end
    
    def login user
      if current_user
        another_user_logged_in user
      else
    	  session[:user_id] = user.id
    	end
    end
    
    def run_require_user
      unless current_user
        not_logged_in_status
      end
    end
    
    def method_missing(meth, *args, &block)
      if meth.to_s =~ /^require_(.+)$/
        if $1 == "user"
          run_require_user
        else
          run_require_role($1, *args, &block)
        end
      else
        super
      end
    end
    
    def run_require_role(role, *args, &block)
      unless current_user && current_user.role.name == role
        not_logged_in_status
      end
    end
    
    def not_logged_in_status
      if Authorizme::remote
        status = {status: "not_logged_in"}
        respond_with status
      else
        redirect_to "/#{Authorizme::namespace}/"
      end
    end
  end
end

ActionController::Base.send :include, Authorizme::ForControllers

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
authorizme-0.0.3 lib/authorizme/for_controllers.rb