Module: LcpRuby::Groups::Contract

Included in:
HostLoader, ModelLoader, YamlLoader
Defined in:
lib/lcp_ruby/groups/contract.rb

Overview

Interface module that defines the contract for group loaders. Included by YamlLoader, ModelLoader, and HostLoader.

Instance Method Summary collapse

Instance Method Details

#all_group_namesArray<String>

Returns all known group names.

Returns:

  • (Array<String>)

Raises:

  • (NotImplementedError)


8
9
10
# File 'lib/lcp_ruby/groups/contract.rb', line 8

def all_group_names
  raise NotImplementedError, "#{self.class}#all_group_names must be implemented"
end

#groups_for_user(user) ⇒ Array<String>

Returns group names the given user belongs to.

Parameters:

  • user (Object)

    the current user

Returns:

  • (Array<String>)

Raises:

  • (NotImplementedError)


15
16
17
# File 'lib/lcp_ruby/groups/contract.rb', line 15

def groups_for_user(user)
  raise NotImplementedError, "#{self.class}#groups_for_user must be implemented"
end

#roles_for_group(group_name) ⇒ Array<String>

Returns role names mapped to the given group.

Parameters:

  • group_name (String)

Returns:

  • (Array<String>)

Raises:

  • (NotImplementedError)


22
23
24
# File 'lib/lcp_ruby/groups/contract.rb', line 22

def roles_for_group(group_name)
  raise NotImplementedError, "#{self.class}#roles_for_group must be implemented"
end

#roles_for_user(user) ⇒ Array<String>

Returns all roles derived from a user’s group memberships. Default implementation composes groups_for_user + roles_for_group.

Parameters:

  • user (Object)

    the current user

Returns:

  • (Array<String>)


30
31
32
# File 'lib/lcp_ruby/groups/contract.rb', line 30

def roles_for_user(user)
  groups_for_user(user).flat_map { |g| roles_for_group(g) }.uniq
end

#user_ids_for_group(group_name) ⇒ Array<Integer>

Returns user IDs that belong to the given group.

Parameters:

  • group_name (String)

Returns:

  • (Array<Integer>)

Raises:

  • (NotImplementedError)


37
38
39
# File 'lib/lcp_ruby/groups/contract.rb', line 37

def user_ids_for_group(group_name)
  raise NotImplementedError, "#{self.class}#user_ids_for_group must be implemented"
end