Class: Casbin::SyncedEnforcer

Inherits:
Enforcer show all
Defined in:
lib/casbin-ruby/synced_enforcer.rb

Overview

SyncedEnforcer wraps Enforcer and provides synchronized access. It’s also a drop-in replacement for Enforcer

Instance Attribute Summary

Attributes inherited from CoreEnforcer

#adapter, #auto_build_role_links, #auto_save, #effector, #enabled, #model, #rm_map, #watcher

Instance Method Summary collapse

Methods inherited from Enforcer

#add_permission_for_user, #add_role_for_user, #add_role_for_user_in_domain, #delete_permission, #delete_permission_for_user, #delete_permissions_for_user, #delete_role, #delete_role_for_user, #delete_roles_for_user, #delete_roles_for_user_in_domain, #delete_user, #get_implicit_permissions_for_user, #get_implicit_roles_for_user, #get_implicit_users_for_permission, #get_permissions_for_user, #get_permissions_for_user_in_domain, #get_roles_for_user, #get_roles_for_user_in_domain, #get_users_for_role, #get_users_for_role_in_domain, #has_permission_for_user, #has_role_for_user

Methods inherited from ManagementEnforcer

#add_function, #add_grouping_policies, #add_grouping_policy, #add_named_grouping_policies, #add_named_grouping_policy, #add_named_policies, #add_named_policy, #add_policies, #add_policy, #get_all_actions, #get_all_named_actions, #get_all_named_objects, #get_all_named_roles, #get_all_named_subjects, #get_all_objects, #get_all_roles, #get_all_subjects, #get_filtered_grouping_policy, #get_filtered_named_grouping_policy, #get_filtered_named_policy, #get_filtered_policy, #get_grouping_policy, #get_named_grouping_policy, #get_named_policy, #get_policy, #has_grouping_policy, #has_named_grouping_policy, #has_named_policy, #has_policy, #parent_add_policies, #parent_add_policy, #parent_remove_filtered_policy, #parent_remove_policies, #parent_remove_policy, #parent_update_policies, #parent_update_policy, #remove_filtered_grouping_policy, #remove_filtered_named_grouping_policy, #remove_filtered_named_policy, #remove_filtered_policy, #remove_grouping_policies, #remove_grouping_policy, #remove_named_grouping_policies, #remove_named_grouping_policy, #remove_named_policies, #remove_named_policy, #remove_policies, #remove_policy, #update_named_policies, #update_named_policy, #update_policies, #update_policy

Methods inherited from CoreEnforcer

#add_named_domain_matching_func, #add_named_matching_func, #build_role_links, #clear_policy, #enable_auto_build_role_links, #enable_auto_save, #enable_enforce, #enforce, #enforce_ex, #filtered?, #init_with_adapter, #init_with_file, #init_with_model_and_adapter, #initialize, #load_filtered_policy, #load_increment_filtered_policy, #load_model, #load_policy, #new_model, new_model, #role_manager, #role_manager=, #save_policy

Constructor Details

This class inherits a constructor from Casbin::CoreEnforcer

Instance Method Details

#auto_loading_running?Boolean

check if SyncedEnforcer is auto loading policies

Returns:

  • (Boolean)


10
11
12
# File 'lib/casbin-ruby/synced_enforcer.rb', line 10

def auto_loading_running?
  ThreadLock.lock?
end


26
27
28
# File 'lib/casbin-ruby/synced_enforcer.rb', line 26

def build_incremental_role_links(op, ptype, rules)
  model.build_incremental_role_links(role_manager, op, 'g', ptype, rules)
end

#start_auto_load_policy(interval) ⇒ Object

starts a thread that will call load_policy every interval seconds



15
16
17
18
19
# File 'lib/casbin-ruby/synced_enforcer.rb', line 15

def start_auto_load_policy(interval)
  return if auto_loading_running?

  ThreadLock.thread = Thread.new { auto_load_policy(interval) }
end

#stop_auto_load_policyObject

stops the thread started by start_auto_load_policy



22
23
24
# File 'lib/casbin-ruby/synced_enforcer.rb', line 22

def stop_auto_load_policy
  ThreadLock.thread.exit if auto_loading_running?
end