Module: PeRbac::User

Defined in:
lib/pe_rbac/user.rb

Class Method Summary collapse

Class Method Details

.create_user(login, email, display_name, password = nil, role_ids = []) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/pe_rbac/user.rb', line 60

def self.create_user(, email, display_name, password=nil, role_ids=[])
  # completely different to what the PE console sends... :/
  # Elegantly convert role_ids to an array if it isn't one already
  user={
    "login"         => ,
    "email"         => email,
    "display_name"  => display_name,
    "role_ids"      => Array(role_ids),
  }

  if password
    user["password"] = password
  end

  PeRbac::Core::request(:post, '/users', user) ? true : false
end

.ensure_user(login, email, display_name, password = nil, role_ids = []) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/pe_rbac/user.rb', line 46

def self.ensure_user(, email, display_name, password=nil, role_ids=[])
  if get_user_id()
    # existing user
    update_user(, email, display_name, role_ids)
    if password
      PeRbac::Action::reset_password(, password)
    end
  else
    # new user
    create_user(, email, display_name, password, role_ids)
  end

end

.get_user(id) ⇒ Object



41
42
43
44
# File 'lib/pe_rbac/user.rb', line 41

def self.get_user(id)
  resp = PeRbac::Core::request(:get, "/users/#{id}")
  resp ? JSON.parse(resp.body) : false
end

.get_user_id(login) ⇒ Object

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



28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/pe_rbac/user.rb', line 28

def self.get_user_id()
  users = get_users
  id = false
  i = 0
  while !id and i < users.length do
    if users[i]['login'] == 
      id = users[i]['id']
    end
    i += 1
  end
  id
end

.get_usersObject



22
23
24
# File 'lib/pe_rbac/user.rb', line 22

def self.get_users
  JSON.parse(PeRbac::Core::request(:get, '/users').body)
end

.update_user(login, email = nil, display_name = nil, role_ids = nil, is_revoked = nil) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/pe_rbac/user.rb', line 77

def self.update_user(, email=nil, display_name=nil, role_ids=nil, is_revoked=nil)
  user = get_user(get_user_id())
  status = false
  if user
    if ! user['remote']
      # trade-off for auto id lookup is that you cant change logins...
      user['login'] =  ?  : user['login']
      user['email'] = email ? email : user['email']
      user['display_name'] = display_name ? display_name : user['display_name']
    end
    user['role_ids'] = role_ids ? Array(role_ids) : user['role_ids']
    user['is_revoked'] = (! is_revoked.nil?) ? is_revoked : user['is_revoked']

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