module PeRbac::Group

Public Class Methods

create_group(login, role_ids=[]) click to toggle source
# File lib/pe_rbac/group.rb, line 57
def self.create_group(login, role_ids=[])
  # completely different to what the PE console sends... :/
  # Elegantly convert role_ids to an array if it isn't one already
  group={
    "login"         => login,
    "role_ids"      => Array(role_ids),
  }

  PeRbac::Core::request(:post, '/groups', group) ? true : false
end
delete_group(login) click to toggle source
# File lib/pe_rbac/group.rb, line 80
def self.delete_group(login)
  group = get_group(get_group_id(login))
  status = false
  if group
    PeRbac::Core::request(:delete, "/groups/#{group['id']}") ? true : false
  end
  status
end
ensure_group(login, role_ids) click to toggle source
# File lib/pe_rbac/group.rb, line 46
def self.ensure_group(login, role_ids)
  if get_group_id(login)
    # existing group
    update_group(login, role_ids)
  else
    # new group
    create_group(login, role_ids)
  end

end
get_group(id) click to toggle source
# File lib/pe_rbac/group.rb, line 41
def self.get_group(id)
  resp = PeRbac::Core::request(:get, "/groups/#{id}")
  resp ? JSON.parse(resp.body) : false
end
get_group_id(login) click to toggle source

get the user id for a login or false if missing eg 'admin' => '42bf351c-f9ec-40af-84ad-e976fec7f4bd'

# File lib/pe_rbac/group.rb, line 28
def self.get_group_id(login)
  groups = get_groups
  id = false
  i = 0
  while !id and i < groups.length do
    if groups[i]['login'] == login
      id = groups[i]['id']
    end
    i += 1
  end
  id
end
get_groups() click to toggle source
# File lib/pe_rbac/group.rb, line 22
def self.get_groups
  JSON.parse(PeRbac::Core::request(:get, '/groups').body)
end
update_group(login, role_ids=[]) click to toggle source
# File lib/pe_rbac/group.rb, line 68
def self.update_group(login, role_ids=[])
  group = get_group(get_group_id(login))
  status = false
  if group
    group['login'] = login ? login : group['login']
    group['role_ids'] = role_ids ? Array(role_ids) : group['role_ids']

    status = PeRbac::Core::request(:put, "/groups/#{group['id']}", group) ? true : false
  end
  status
end