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



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

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



44
45
46
# File 'lib/user.rb', line 44

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

#deactivate_users(account_id, emails) ⇒ Object



96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/user.rb', line 96

def deactivate_users(, emails)
  remove_acct_management(, emails)
  user_ids = get_user_ids(emails);

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

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

  get_tag_value(result, "numchanged")
end

#deny_users(account_id, emails) ⇒ Object



130
131
132
133
134
135
136
137
138
139
140
141
142
# File 'lib/user.rb', line 130

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

  url = "https://#{base_domain}/db/main?a=QBI_AccountRemoveMultiUserAccess"
  url += "&accountid=#{}"
  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



59
60
61
62
63
64
65
66
67
68
# File 'lib/user.rb', line 59

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_page_token(url) ⇒ Object



79
80
81
82
# File 'lib/user.rb', line 79

def get_page_token(url)
  response = send_quickbase_ui_action(url)
  response.body.match(/name=PageToken value=(.*)>/)[1]
end

#get_user_ids(emails) ⇒ Object



158
159
160
161
162
# File 'lib/user.rb', line 158

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
30
31
32
33
34
# File 'lib/user.rb', line 16

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

  user = {
    id: get_attr_value( result.css('user'), :id ),
    name: get_tag_value( result, :name ),
    roles: []
  }

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

  user
end

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



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

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

#reactivate_users(account_id, emails) ⇒ Object



111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/user.rb', line 111

def reactivate_users(, emails)
  user_ids = get_user_ids(emails);
  numchanged = 0

  url = "https://#{base_domain}/db/main?a=QBI_DeactivateUser"
  url += "&cmpid=#{}"
  url += "&tuid="

  user_ids.each do |id|
    activate = url + id
    result = send_quickbase_ui_action(activate)
    result = parse_xml( result.body )
    
    numchanged += 1 if get_tag_value(result, "newstatus")
  end

  numchanged
end

#remove_access(db_id, email) ⇒ Object



70
71
72
73
74
75
76
77
# File 'lib/user.rb', line 70

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

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

#remove_acct_management(account_id, emails) ⇒ Object



84
85
86
87
88
89
90
91
92
93
94
# File 'lib/user.rb', line 84

def remove_acct_management(, emails)
  user_ids = get_user_ids(emails);
  user_ids.map!{ |user_id| "US" + user_id.split(".")[0] + "=12"}
  user_ids = user_ids.join(",")

  url = "https://#{base_domain}/db/main?a=DoAccountPerms"
  url += "&accountid=#{}"
  page_token = get_page_token(url)

  send_quickbase_ui_action(url, {'accountID' => , 'retval' => user_ids, 'pageToken' => page_token})
end

#remove_user_from_role(db_id, user_id, role_id) ⇒ Object



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

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



144
145
146
147
148
149
150
151
152
153
154
155
156
# File 'lib/user.rb', line 144

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

  url = "https://#{base_domain}/db/main?a=QBI_AccountRemoveMultiUserAccess"
  url += "&accountid=#{}"
  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