Module: AdvantageQuickbase::API::User

Included in:
AdvantageQuickbase::API
Defined in:
lib/user.rb

Instance Method Summary collapse

Instance Method Details

#add_user_to_role(db_id, user_id, role_id) ⇒ Object



31
32
33
# File 'lib/user.rb', line 31

def add_user_to_role(db_id, user_id, role_id)
  send_request(:AddUserToRole, db_id, { :userid => user_id, :roleid => role_id }) 
end

#change_user_role(db_id, user_id, role_id, new_role_id = nil) ⇒ Object



39
40
41
# File 'lib/user.rb', line 39

def change_user_role(db_id, user_id, role_id, new_role_id=nil)
  send_request(:ChangeUserRole, db_id, { :userid => user_id, :roleid => role_id, :newroleid => new_role_id })
end

#deny_users(account_id, emails) ⇒ Object



74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/user.rb', line 74

def deny_users(, emails)
  user_ids = get_user_ids(emails);

  url = "https://#{base_domain}/db/main?a=QBI_AccountRemoveMultiUserAccess"
  url += "&accountid=#{account_id}"
  url += "&removeAction=deny"
  url += "&uids=" + user_ids.join(",")

  result = send_quickbase_ui_action(url)
  result = parse_xml( result.body )

  get_tag_value(result, "numchanged")
end

#get_app_accessObject



54
55
56
57
58
59
60
61
62
63
# File 'lib/user.rb', line 54

def get_app_access()
  tables = []
  result = send_request(:GrantedDBs, "main", {})

  result.css( 'dbinfo' ).each do |database|
    tables << { :name => get_tag_value(database, "dbname"), :db_id => get_tag_value(database, "dbid") }
  end

  tables
end

#get_user_ids(emails) ⇒ Object



102
103
104
105
106
# File 'lib/user.rb', line 102

def get_user_ids(emails)
  user_ids = emails.map do |email|
    self.(email)[:id]
  end
end

#get_user_info(email) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
# File 'lib/user.rb', line 4

def (email)
  user = send_request( :GetUserInfo, "main", { :email => email })
  user = {
    :id => get_attr_value(user.css("user"), :id),
    :first_name => get_tag_value(user, :firstname),
    :last_name => get_tag_value(user, :lastname),
    :login => get_tag_value(user, :login),
    :email => get_tag_value(user, :email),
    :screen_name => get_tag_value(user, :screenname),
  }
end

#get_user_role(db_id, user_id) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/user.rb', line 16

def get_user_role(db_id, user_id)
  roles = []
  result = send_request(:GetUserRole, db_id, { :userid => user_id })

  result.css( 'role' ).each do |role|
    roles << role = { 
      :id => get_attr_value(role, :id), 
      :name => get_tag_value(role, :name), 
      :type => get_tag_value(role, :access )
    }
  end

  roles
end

#provision_user(db_id, email, role_id = nil, first_name = nil, last_name = nil) ⇒ Object



43
44
45
46
47
48
49
50
51
52
# File 'lib/user.rb', line 43

def provision_user(db_id, email, role_id=nil, first_name=nil, last_name=nil)
  options = {
    :email => email,
    :roleid => role_id,
    :first_name => first_name, 
    :last_name => last_name
  }

  send_request(:ProvisionUser, db_id, options)
end

#remove_access(db_id, email) ⇒ Object



65
66
67
68
69
70
71
72
# File 'lib/user.rb', line 65

def remove_access(db_id, email)
  user = self.(email)
  roles = get_user_role(db_id, user[:id])

  roles.each do |role|
    self.remove_user_from_role(db_id, user[:id], role[:id])
  end
end

#remove_user_from_role(db_id, user_id, role_id) ⇒ Object



35
36
37
# File 'lib/user.rb', line 35

def remove_user_from_role(db_id, user_id, role_id)
  send_request(:RemoveUserFromRole, db_id, { :userid => user_id, :roleid => role_id })
end

#undeny_users(account_id, emails) ⇒ Object



88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/user.rb', line 88

def undeny_users(, emails)
  user_ids = get_user_ids(emails);

  url = "https://#{base_domain}/db/main?a=QBI_AccountRemoveMultiUserAccess"
  url += "&accountid=#{account_id}"
  url += "&removeAction=allow"
  url += "&uids=" + user_ids.join(",")

  result = send_quickbase_ui_action(url)
  result = parse_xml( result.body )

  get_tag_value(result, "numchanged")
end