19
20
21
22
23
24
25
26
27
|
# File 'lib/maybee/authorization_object.rb', line 19
def allows(*args)
options = args.
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
|