Module: Legion::Rbac::CapabilityRegistry

Extended by:
Logging::Helper
Defined in:
lib/legion/rbac/capability_registry.rb

Class Method Summary collapse

Class Method Details

.allObject



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

Returns:

  • (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