Module: Maybee::AuthorizationObject::ClassMethods

Defined in:
lib/maybee/authorization_object.rb

Instance Method Summary collapse

Instance Method Details

#allows(*args) ⇒ Object

Raises:

  • (ArgumentError)


19
20
21
22
23
24
25
26
27
# 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 = {}) ⇒ Object



34
35
36
# 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) ⇒ Object



29
30
31
32
# File 'lib/maybee/authorization_object.rb', line 29

def allows_to(*accesses)
  options = accesses.extract_options!
  allows options.merge(:to => accesses)
end