class Feature::Permissions
Attributes
rules[R]
Public Class Methods
new(path)
click to toggle source
# File lib/toggles/feature/permissions.rb, line 12 def initialize(path) @rules = YAML.load(File.read(path)) end
Public Instance Methods
subjects()
click to toggle source
# File lib/toggles/feature/permissions.rb, line 16 def subjects @subjects ||= keys.map(&:to_sym) end
valid_for?(entities)
click to toggle source
# File lib/toggles/feature/permissions.rb, line 20 def valid_for?(entities) unless subjects == entities.keys raise Subject::Invalid, Subject.difference(subjects, entities.keys) end rules.all? do |name, rule| entity = entities[name.to_sym] if entity.nil? return false end if entity.class.ancestors.find { |ancestor| ancestor == Comparable } entity = OpenStruct.new(name => entity) rule = {name => rule} end rule.all? do |key, value| OPERATIONS.fetch(key.to_sym, Operation::Attribute).call(entity, key, value) end end end