Class: Pebblebed::Security::RoleSchema

Inherits:
Object
  • Object
show all
Defined in:
lib/pebblebed/security/role_schema.rb

Defined Under Namespace

Classes: UndefinedRole

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(connector, identity) ⇒ RoleSchema

Returns a new instance of RoleSchema.



13
14
15
16
17
# File 'lib/pebblebed/security/role_schema.rb', line 13

def initialize(connector, identity)
  @connector = connector
  @identity = identity
  @role = find_current_role
end

Class Attribute Details

.rolesObject (readonly)

Returns the value of attribute roles.



10
11
12
# File 'lib/pebblebed/security/role_schema.rb', line 10

def roles
  @roles
end

Instance Attribute Details

#connectorObject (readonly)

Returns the value of attribute connector.



7
8
9
# File 'lib/pebblebed/security/role_schema.rb', line 7

def connector
  @connector
end

#identityObject (readonly)

Returns the value of attribute identity.



7
8
9
# File 'lib/pebblebed/security/role_schema.rb', line 7

def identity
  @identity
end

Class Method Details

.requirements_for_role(role) ⇒ Object

Raises:



27
28
29
30
31
# File 'lib/pebblebed/security/role_schema.rb', line 27

def self.requirements_for_role(role)
  the_role = @roles.select {|r| r[:name] == role.to_sym }.first
  raise UndefinedRole, "The role :#{role} is not defined." unless the_role
  @roles[0..@roles.index(the_role)].map{|r| r[:requirements]}.flatten.uniq.compact
end

.role(name, options) ⇒ Object



33
34
35
36
37
38
39
# File 'lib/pebblebed/security/role_schema.rb', line 33

def self.role(name, options)
  @roles ||= []
  @role_rank_level ||= 0
  @roles << options.merge(:name => name, :role_rank => @role_rank_level)
  @roles.sort!{|a,b| a[:role_rank] <=> b[:role_rank]}
  @role_rank_level += 1
end

Instance Method Details

#roleObject



19
20
21
22
23
24
25
# File 'lib/pebblebed/security/role_schema.rb', line 19

def role
  {
    :current => @role[:name],
    :capabilities => @role[:capabilities],
    :upgrades => @role[:upgrades]
  }
end