Class: Kaname::Adapter::ReadAndWrite

Inherits:
ReadOnly
  • Object
show all
Defined in:
lib/kaname/adapter/read_and_write.rb

Instance Method Summary collapse

Methods inherited from ReadOnly

#find_user, #initialize, #list_role_assignments, #list_roles, #list_tenants, #list_users, #users_hash

Constructor Details

This class inherits a constructor from Kaname::Adapter::ReadOnly

Instance Method Details

#change_user_role(tenant_name, user_hash, before_role_name, after_role_name) ⇒ Object



54
55
56
57
# File 'lib/kaname/adapter/read_and_write.rb', line 54

def change_user_role(tenant_name, user_hash, before_role_name, after_role_name)
  delete_user_role(tenant_name, user_hash, before_role_name)
  create_user_role(tenant_name, user_hash, after_role_name)
end

#create_user(name, email) ⇒ Object



7
8
9
10
11
12
13
# File 'lib/kaname/adapter/read_and_write.rb', line 7

def create_user(name, email)
  password = Kaname::Generator.password
  puts "#{name},#{password}"

  user = Yao::User.create(name: name, email: email, password: password)
  {"id" => user.id,  "name" => user.name}
end

#create_user_role(tenant_name, user_hash, role_name) ⇒ Object



15
16
17
# File 'lib/kaname/adapter/read_and_write.rb', line 15

def create_user_role(tenant_name, user_hash, role_name)
  Yao::Role.grant(role_name, to: user_hash["name"], on: tenant_name)
end

#delete_user(name) ⇒ Object



46
47
48
# File 'lib/kaname/adapter/read_and_write.rb', line 46

def delete_user(name)
  Yao::User.destroy find_user(name)["id"]
end

#delete_user_role(tenant_name, user_hash, role_name) ⇒ Object



50
51
52
# File 'lib/kaname/adapter/read_and_write.rb', line 50

def delete_user_role(tenant_name, user_hash, role_name)
  Yao::Role.revoke(role_name, from: user_hash["name"], on: tenant_name)
end

#update_user_password(old_password, new_password) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/kaname/adapter/read_and_write.rb', line 19

def update_user_password(old_password, new_password)
  unless Kaname::Config.management_url
    raise 'management_url is missing. Check the configuration file.'
  end

  if old_password && new_password
    token = Yao::Auth.try_new.token
    me    = Yao::User.get_by_name(Kaname::Config.username)
    endpoint = Kaname::Config.management_url

    url = URI.parse("#{endpoint}/OS-KSCRUD/users/#{me.id}")

    req = Net::HTTP::Patch.new(url.path)
    req["Content-type"] = "application/json"
    req["X-Auth-Token"] = token
    req.body = JSON.generate({'user' => {'password' => new_password, 'original_password' => old_password}})

    res = Net::HTTP.start(url.host, url.port) {|http| http.request(req) }

    if res.code == "200"
      puts "Your password is updated. Please update your ~/.kaname configuration too."
    else
      raise "password updating is failed"
    end
  end
end