class Casbin::InternalEnforcer

InternalEnforcer = CoreEnforcer + Internal API.

Protected Instance Methods

add_policies(sec, ptype, rules) click to toggle source

adds rules to the current policy.

# File lib/casbin-ruby/internal_enforcer.rb, line 18
def add_policies(sec, ptype, rules)
  return false unless model.add_policies(sec, ptype, rules)

  make_persistent :add_policies, sec, ptype, rules
end
add_policy(sec, ptype, rule) click to toggle source

adds a rule to the current policy.

# File lib/casbin-ruby/internal_enforcer.rb, line 11
def add_policy(sec, ptype, rule)
  return false unless model.add_policy(sec, ptype, rule)

  make_persistent :add_policy, sec, ptype, rule
end
remove_filtered_policy(sec, ptype, field_index, *field_values) click to toggle source

removes rules based on field filters from the current policy.

# File lib/casbin-ruby/internal_enforcer.rb, line 53
def remove_filtered_policy(sec, ptype, field_index, *field_values)
  return false unless model.remove_filtered_policy(sec, ptype, field_index, *field_values)

  make_persistent :remove_filtered_policy, sec, ptype, field_index, *field_values
end
remove_policies(sec, ptype, rules) click to toggle source

removes policy rules from the model.

# File lib/casbin-ruby/internal_enforcer.rb, line 46
def remove_policies(sec, ptype, rules)
  return false unless model.remove_policies(sec, ptype, rules)

  make_persistent :remove_policies, sec, ptype, rules
end
remove_policy(sec, ptype, rule) click to toggle source

removes a rule from the current policy.

# File lib/casbin-ruby/internal_enforcer.rb, line 39
def remove_policy(sec, ptype, rule)
  return false unless model.remove_policy(sec, ptype, rule)

  make_persistent :remove_policy, sec, ptype, rule
end
update_policies(sec, ptype, old_rules, new_rules) click to toggle source

updates rules from the current policy.

# File lib/casbin-ruby/internal_enforcer.rb, line 32
def update_policies(sec, ptype, old_rules, new_rules)
  return false unless model.update_policies(sec, ptype, old_rules, new_rules)

  make_persistent :update_policies, sec, ptype, old_rules, new_rules
end
update_policy(sec, ptype, old_rule, new_rule) click to toggle source

updates a rule from the current policy.

# File lib/casbin-ruby/internal_enforcer.rb, line 25
def update_policy(sec, ptype, old_rule, new_rule)
  return false unless model.update_policy(sec, ptype, old_rule, new_rule)

  make_persistent :update_policy, sec, ptype, old_rule, new_rule
end

Private Instance Methods

make_persistent(meth, *args) click to toggle source
# File lib/casbin-ruby/internal_enforcer.rb, line 61
def make_persistent(meth, *args)
  if adapter && auto_save
    # we can add the `add_policies`, `update_policy`, `update_policies`, `remove_policies` methods
    # to the base Adapter class and remove `respond_to?`
    return false unless adapter.respond_to?(meth) && adapter.public_send(meth, *args)

    watcher&.update
  end

  true
end