Module: Scimitar::Rbac

Defined in:
lib/scimitar/rbac.rb,
lib/scimitar/rbac/engine.rb,
lib/scimitar/rbac/version.rb,
lib/scimitar/rbac/route_helper.rb

Defined Under Namespace

Modules: RouteHelper Classes: Engine, Error

Constant Summary collapse

URN_PREFIX =

URN prefix for RBAC extension schemas

"urn:ietf:params:scim:schemas:extension:rbac:2.0"
VERSION =
"0.1.2"

Class Method Summary collapse

Class Method Details

.load!Object

Eagerly load all RBAC components. Called after Rails and scimitar are fully initialized (via Engine initializer or manually).



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/scimitar/rbac.rb', line 17

def self.load!
  return if @loaded

  # Complex type schemas (must be loaded before the complex types
  # that reference them and before resource schemas that use them)
  require_relative "rbac/schema/hierarchy_member"
  require_relative "rbac/schema/role_assignment"
  require_relative "rbac/schema/entitlement_assignment"
  require_relative "rbac/schema/application_reference"

  # Complex types (must be loaded before resource schemas that reference them)
  require_relative "rbac/complex_types/hierarchy_member"
  require_relative "rbac/complex_types/role_assignment"
  require_relative "rbac/complex_types/entitlement_assignment"
  require_relative "rbac/complex_types/application_reference"

  # Resource schemas
  require_relative "rbac/schema/role"
  require_relative "rbac/schema/entitlement"
  require_relative "rbac/schema/application"

  # Resources
  require_relative "rbac/resources/role"
  require_relative "rbac/resources/entitlement"
  require_relative "rbac/resources/application"

  @loaded = true
end

.register_resources!Object

Register all RBAC resources with the Scimitar engine. Called automatically by the Rails engine, or can be called manually.



48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/scimitar/rbac.rb', line 48

def self.register_resources!
  load!

  [
    Scimitar::Resources::Rbac::Role,
    Scimitar::Resources::Rbac::Entitlement,
    Scimitar::Resources::Rbac::Application
  ].each do |resource|
    unless Scimitar::Engine.custom_resources.include?(resource)
      Scimitar::Engine.add_custom_resource(resource)
    end
  end
end

.reset!Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Reset load state — useful for testing



64
65
66
# File 'lib/scimitar/rbac.rb', line 64

def self.reset!
  @loaded = false
end