Module: Legion::Rbac::ConfigLoader

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

Class Method Summary collapse

Class Method Details

.load_roles(roles_config = nil) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/legion/rbac/config_loader.rb', line 11

def self.load_roles(roles_config = nil)
  roles_config ||= Legion::Settings[:rbac][:roles]
  roles = roles_config.each_with_object({}) do |(name, config), index|
    index[name.to_sym] = Role.new(
      name:               name,
      description:        config[:description] || '',
      permissions:        config[:permissions] || [],
      deny:               config[:deny] || [],
      cross_team:         config[:cross_team] || false,
      capability_grants:  config[:capability_grants] || [],
      capability_denials: config[:capability_denials] || []
    )
    log.debug("RBAC role loaded name=#{name} permissions=#{config[:permissions]&.size || 0} deny=#{config[:deny]&.size || 0}")
  end
  log.info("RBAC roles loaded count=#{roles.size}")
  roles
rescue StandardError => e
  handle_exception(e, level: :error, operation: 'rbac.config_loader.load_roles')
  raise
end