lib/snfoil/policy.rb in snfoil-policy-1.0.1 vs lib/snfoil/policy.rb in snfoil-policy-1.1.0
- old
+ new
@@ -33,32 +33,31 @@
end
def permission(authorization_type, entity_class = nil, with: nil, &block)
@snfoil_permissions ||= {}
@snfoil_permissions[authorization_type] ||= {}
- if @snfoil_permissions[authorization_type][entity_class]
- raise SnFoil::Policy::Error,
- "permission #{entity_class} #{authorization_type} already defined for #{name}"
- end
-
@snfoil_permissions[authorization_type][entity_class] = build_permission_exec(with, block)
define_permission_method(authorization_type)
end
def inherited(subclass)
super
- instance_variables.grep(/@snfoil_.+/).each do |i|
- subclass.instance_variable_set(i, instance_variable_get(i).dup)
+ permissions = instance_variable_get(:@snfoil_permissions) || {}
+ inherited_permissions = {}
+ permissions.each_key do |action|
+ inherited_permissions[action] = permissions[action].dup
end
+
+ subclass.instance_variable_set(:@snfoil_permissions, inherited_permissions)
end
end
attr_reader :record, :entity
attr_accessor :options
- def initialize(entity, record, options = {})
+ def initialize(entity, record, **options)
@record = record
@entity = entity
@options = options
end
@@ -68,10 +67,10 @@
#
# @since 0.1.0
class Scope
attr_reader :scope, :entity
- def initialize(scope, entity = nil)
+ def initialize(entity, scope)
@entity = entity
@scope = scope
end
def resolve