module Maybee::AuthorizationObject::ClassMethods

Public Instance Methods

allows(*args) click to toggle source
# File lib/maybee/authorization_object.rb, line 19
def allows(*args)
  options = args.extract_options!
  accesses = Array(options.delete(:to))
  raise ArgumentError, "No accesses given" if accesses.empty?
  exclusive = options.delete(:exclusive)
  subject_classes = args.map { |name| name.is_a?(Symbol) ? name.to_s.classify.constantize : name.constantize }
  additional_authorizations = accesses.inject({}) { |hsh, access| hsh[access] = [Authorization.new(access, subject_classes, options)]; hsh }
  self.authorizations = authorizations.merge(additional_authorizations) { |access, previous_auths, new_auths| exclusive ? new_auths : previous_auths + new_auths }
end
allows_crud(options = {}) click to toggle source
# File lib/maybee/authorization_object.rb, line 34
def allows_crud(options = {})
  allows_to :create, :update, :destroy, options.reverse_merge(allow_nil: true)
end
allows_to(*accesses) click to toggle source
# File lib/maybee/authorization_object.rb, line 29
def allows_to(*accesses)
  options = accesses.extract_options!
  allows options.merge(:to => accesses)
end