Module: Legion::Rbac::CapabilityRegistry
- Extended by:
- Logging::Helper
- Defined in:
- lib/legion/rbac/capability_registry.rb
Class Method Summary collapse
- .all ⇒ Object
- .audit_result_for(extension_name) ⇒ Object
- .clear! ⇒ Object
- .extensions_with(capability) ⇒ Object
- .for_extension(extension_name) ⇒ Object
- .register(extension_name, capabilities:, audit_result: nil) ⇒ Object
- .registered?(extension_name) ⇒ Boolean
Class Method Details
.all ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/legion/rbac/capability_registry.rb', line 50 def all registry = mon.synchronize do entries.each_with_object({}) do |(extension_name, entry), copy| copy[extension_name] = { capabilities: entry[:capabilities].dup, audit_result: entry[:audit_result], registered_at: entry[:registered_at] } end end log.debug("RBAC capability_registry all count=#{registry.size}") registry end |
.audit_result_for(extension_name) ⇒ Object
41 42 43 44 45 46 47 48 |
# File 'lib/legion/rbac/capability_registry.rb', line 41 def audit_result_for(extension_name) audit_result = mon.synchronize do entry = entries[extension_name.to_s] entry&.dig(:audit_result) end log.debug("RBAC capability_registry audit_result_for extension=#{extension_name} present=#{!audit_result.nil?}") audit_result end |
.clear! ⇒ Object
70 71 72 73 |
# File 'lib/legion/rbac/capability_registry.rb', line 70 def clear! mon.synchronize { @entries = {} } log.info('RBAC capability_registry cleared') end |
.extensions_with(capability) ⇒ Object
32 33 34 35 36 37 38 39 |
# File 'lib/legion/rbac/capability_registry.rb', line 32 def extensions_with(capability) cap_sym = capability.to_sym extensions = mon.synchronize do entries.select { |_, entry| entry[:capabilities].include?(cap_sym) }.keys end log.debug("RBAC capability_registry extensions_with capability=#{capability} count=#{extensions.size}") extensions end |
.for_extension(extension_name) ⇒ Object
23 24 25 26 27 28 29 30 |
# File 'lib/legion/rbac/capability_registry.rb', line 23 def for_extension(extension_name) capabilities = mon.synchronize do entry = entries[extension_name.to_s] entry ? entry[:capabilities].dup : [] end log.debug("RBAC capability_registry for_extension extension=#{extension_name} count=#{capabilities.size}") capabilities end |
.register(extension_name, capabilities:, audit_result: nil) ⇒ Object
12 13 14 15 16 17 18 19 20 21 |
# File 'lib/legion/rbac/capability_registry.rb', line 12 def register(extension_name, capabilities:, audit_result: nil) mon.synchronize do entries[extension_name.to_s] = { capabilities: Array(capabilities).map(&:to_sym).uniq, audit_result: audit_result, registered_at: Time.now } end log.info("RBAC capability_registry register extension=#{extension_name} count=#{Array(capabilities).uniq.size}") end |
.registered?(extension_name) ⇒ Boolean
64 65 66 67 68 |
# File 'lib/legion/rbac/capability_registry.rb', line 64 def registered?(extension_name) registered = mon.synchronize { entries.key?(extension_name.to_s) } log.debug("RBAC capability_registry registered extension=#{extension_name} value=#{registered}") registered end |