Module: TurboChat::Configuration::RoleSupport

Included in:
TurboChat::Configuration
Defined in:
lib/turbo_chat/configuration/role_support.rb

Instance Method Summary collapse

Instance Method Details

#add_role(key, name:, permissions:, rank: 0) ⇒ Object

Raises:

  • (ArgumentError)


3
4
5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/turbo_chat/configuration/role_support.rb', line 3

def add_role(key, name:, permissions:, rank: 0)
  normalized_key = normalize_role_key(key)
  raise ArgumentError, "Role key cannot be blank" if normalized_key.blank?
  raise ArgumentError, "Role #{normalized_key} is reserved" if DEFAULT_ROLE_DEFINITIONS.key?(normalized_key)

  role_name = name.to_s.strip
  raise ArgumentError, "Role name cannot be blank" if role_name.blank?

  @additional_roles[normalized_key] = {
    name: role_name,
    rank: rank.to_i,
    permissions: Array(permissions).map { |permission| permission.to_sym }.uniq
  }
end

#additional_rolesObject



22
# File 'lib/turbo_chat/configuration/role_support.rb', line 22

def additional_roles = @additional_roles.dup

#clear_additional_roles!Object



20
# File 'lib/turbo_chat/configuration/role_support.rb', line 20

def clear_additional_roles! = @additional_roles = {}

#remove_role(key) ⇒ Object



18
# File 'lib/turbo_chat/configuration/role_support.rb', line 18

def remove_role(key) = @additional_roles.delete(normalize_role_key(key))

#role_definition(key) ⇒ Object



26
# File 'lib/turbo_chat/configuration/role_support.rb', line 26

def role_definition(key) = role_definitions[normalize_role_key(key)]

#role_definitionsObject



24
# File 'lib/turbo_chat/configuration/role_support.rb', line 24

def role_definitions = DEFAULT_ROLE_DEFINITIONS.merge(@additional_roles)