class Casbin::Rbac::DefaultRoleManager::Role
represents the data structure for a role in RBAC.
Attributes
name[RW]
roles[RW]
Public Class Methods
new(name)
click to toggle source
# File lib/casbin-ruby/rbac/default_role_manager/role.rb, line 10 def initialize(name) @name = name @roles = [] end
Public Instance Methods
add_role(role)
click to toggle source
# File lib/casbin-ruby/rbac/default_role_manager/role.rb, line 15 def add_role(role) return if roles.any? { |rr| rr.name == role.name } roles << role end
delete_role(role)
click to toggle source
# File lib/casbin-ruby/rbac/default_role_manager/role.rb, line 21 def delete_role(role) roles.delete_if { |rr| rr.name == role.name } end
get_roles()
click to toggle source
# File lib/casbin-ruby/rbac/default_role_manager/role.rb, line 33 def get_roles roles.map(&:name) end
has_direct_role(name)
click to toggle source
# File lib/casbin-ruby/rbac/default_role_manager/role.rb, line 37 def has_direct_role(name) roles.any? { |role| role.name == name } end
has_role(role_name, hierarchy_level)
click to toggle source
# File lib/casbin-ruby/rbac/default_role_manager/role.rb, line 25 def has_role(role_name, hierarchy_level) return true if role_name == name return false if hierarchy_level.to_i <= 0 roles.each { |role| return true if role.has_role(role_name, hierarchy_level - 1) } false end
to_string()
click to toggle source
# File lib/casbin-ruby/rbac/default_role_manager/role.rb, line 41 def to_string return if roles.empty? names = get_roles.join(', ') if roles.size == 1 "#{name} < #{names}" else "#{name} < (#{names})" end end