class ActivePermission::Base

class UserPermission < ActivePermission::Base

def initialize(user)
  if user.admin?
    can 'manage/root', :index
  else
    can 'root', :all
  end
end

end

Public Instance Methods

can(controllers, actions, &block) click to toggle source
# File lib/active_permission/base.rb, line 12
def can(controllers, actions, &block)
  @allowed_actions ||= {}
  Array(controllers).each do |controller|
    Array(actions).each do |action|
      @allowed_actions[[controller.to_s, action.to_s]] = block || true
    end
  end
end
can!(controllers, actions, *resource) click to toggle source
# File lib/active_permission/base.rb, line 20
def can!(controllers, actions, *resource)
  @allowed_actions ||= {}
  Array(controllers).each do |controller|
    Array(actions).each do |action|
      allowed = @allowed_actions[[controller.to_s, action.to_s]]
      result = allowed && (allowed == true || resource && allowed.call(*resource))
      if result == true
        return result  
      else
        raise AccessDenied.new(controller, action, resource)
      end
    end
  end
  false
end
can?(controllers, actions, *resource) click to toggle source
# File lib/active_permission/base.rb, line 35
def can?(controllers, actions, *resource)
   can!(controllers, actions, *resource)
rescue AccessDenied
  false
end