Module: PeRbac::Action

Defined in:
lib/pe_rbac/action.rb

Class Method Summary collapse

Class Method Details

.login(login, password, lifetime = false) ⇒ Object



38
39
40
41
42
43
44
45
46
# File 'lib/pe_rbac/action.rb', line 38

def self.(, password, lifetime=false)
  dirname = Dir.home + '/.puppetlabs'
  tokenfile = dirname + '/token'
  if ! Dir.exist?(dirname)
    Dir.mkdir(dirname, 0700)
  end
  File.write(tokenfile, token(, password, lifetime))
  File.chmod(0600, tokenfile)
end

.reset_password(login, password) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/pe_rbac/action.rb', line 48

def self.reset_password(, password)
  # lookup user id
  user_id = User::get_user_id()
  status = false
  if user_id
    # get password reset token
    reset_token = PeRbac::Core::request(:post, "/users/#{user_id}/password/reset")

    # reset password
    PeRbac::Core::request(:post, '/auth/reset', {
      'token'     => reset_token,
      'password'  => password,
    })
    status = true
  end
  status
end

.token(login, password, lifetime = false) ⇒ Object

Token



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/pe_rbac/action.rb', line 24

def self.token(, password, lifetime=false)
  payload = {
    "login"     => ,
    "password"  => password,
  }

  # see https://docs.puppet.com/pe/latest/rbac_token_auth.html#setting-a-token-specific-lifetime
  if lifetime
    payload["lifetime"] = lifetime
  end
  resp = PeRbac::Core::request(:post, '/auth/token', payload)
  resp ? JSON.parse(resp.body)['token'] : false
end