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