Class: Comet::UserProfileConfig

Inherits:
Object
  • Object
show all
Defined in:
lib/comet/models/user_profile_config.rb

Overview

UserProfileConfig is a typed class wrapper around the underlying Comet Server API data structure. This is the main data structure for a user’s profile.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeUserProfileConfig

Returns a new instance of UserProfileConfig.



165
166
167
# File 'lib/comet/models/user_profile_config.rb', line 165

def initialize
  clear
end

Instance Attribute Details

#account_nameObject

A longer descriptive name for this account. It is not necessarily unique to the Comet Server. The end-user might be able to change it inside the Comet Backup desktop app.



24
25
26
# File 'lib/comet/models/user_profile_config.rb', line 24

def 
  @account_name
end

#all_protected_items_quota_bytesObject

A limit on the total Size of all Protected Items in this account. It is enforced if AllProtectedItemsQuotaEnabled is true.



92
93
94
# File 'lib/comet/models/user_profile_config.rb', line 92

def all_protected_items_quota_bytes
  @all_protected_items_quota_bytes
end

#all_protected_items_quota_enabledObject

A limit on the total Size of all Protected Items in this account. The number of bytes should be configured in AllProtectedItemsQuotaBytes.



87
88
89
# File 'lib/comet/models/user_profile_config.rb', line 87

def all_protected_items_quota_enabled
  @all_protected_items_quota_enabled
end

#allow_password_and_totploginObject

If true, then TOTP is required to open the desktop app or the Comet Server web interface with this user’s credentials.



136
137
138
# File 'lib/comet/models/user_profile_config.rb', line 136

def allow_password_and_totplogin
  @allow_password_and_totplogin
end

#allow_password_loginObject

Returns the value of attribute allow_password_login.



131
132
133
# File 'lib/comet/models/user_profile_config.rb', line 131

def 
  @allow_password_login
end

#backup_rulesObject

Schedules The string keys can be any unique key. Using a GUID is recommended, but optional.



66
67
68
# File 'lib/comet/models/user_profile_config.rb', line 66

def backup_rules
  @backup_rules
end

#create_timeObject

Unix timestamp in seconds



151
152
153
# File 'lib/comet/models/user_profile_config.rb', line 151

def create_time
  @create_time
end

#creation_guidObject

A random GUID that is allocated when the user profile is created for the first time. You can use this to help disambiguate users with the same username across multiple Comet Servers.



156
157
158
# File 'lib/comet/models/user_profile_config.rb', line 156

def creation_guid
  @creation_guid
end

#destinationsObject

Storage Vaults The string keys can be any unique key. Using a GUID is recommended, but optional.



56
57
58
# File 'lib/comet/models/user_profile_config.rb', line 56

def destinations
  @destinations
end

#devicesObject

Devices The string keys are the device’s ID. The device ID is generated automatically based on a mix of hardware and software identifiers on the installed PC. To revoke a device, use the AdminRevokeDevice API instead of accessing these fields directly. This API can also remove associated Protected Items, uninstall the remote device, and disconnect its live connection.



75
76
77
# File 'lib/comet/models/user_profile_config.rb', line 75

def devices
  @devices
end

#emailsObject

A list of email addresses to send reports to.



41
42
43
# File 'lib/comet/models/user_profile_config.rb', line 41

def emails
  @emails
end

#is_suspendedObject

Returns the value of attribute is_suspended.



78
79
80
# File 'lib/comet/models/user_profile_config.rb', line 78

def is_suspended
  @is_suspended
end

#language_codeObject

One of the supported languages, such as en_US (DEFAULT_LANGUAGE).



33
34
35
# File 'lib/comet/models/user_profile_config.rb', line 33

def language_code
  @language_code
end

#last_suspendedObject

Unix timestamp in seconds. Zero if the device is not suspended.



82
83
84
# File 'lib/comet/models/user_profile_config.rb', line 82

def last_suspended
  @last_suspended
end

#local_timezoneObject

Timezone in IANA format. Individual devices may declare a more specific timezone in the Devices field.



29
30
31
# File 'lib/comet/models/user_profile_config.rb', line 29

def local_timezone
  @local_timezone
end

#maximum_devicesObject

A limit on the total number of devices registered in this account. Set to zero to allow unlimited devices.



97
98
99
# File 'lib/comet/models/user_profile_config.rb', line 97

def maximum_devices
  @maximum_devices
end

#organization_idObject

Tenant



37
38
39
# File 'lib/comet/models/user_profile_config.rb', line 37

def organization_id
  @organization_id
end

#override_email_settingsObject

By default, all the email addresses in the Emails field will receieve the policy-default or server-wide-default style of email report. Add an override for a specific email address in here to allow customizing the email report that will be received.



47
48
49
# File 'lib/comet/models/user_profile_config.rb', line 47

def override_email_settings
  @override_email_settings
end

#password_formatObject

One of the PASSWORD_FORMAT_ constants To change the user’s password, use the AdminResetUserPassword API instead of accessing these fields directly. Otherwise, other encrypted fields in the user profile may become corrupted.



119
120
121
# File 'lib/comet/models/user_profile_config.rb', line 119

def password_format
  @password_format
end

#password_hashObject

Returns the value of attribute password_hash.



122
123
124
# File 'lib/comet/models/user_profile_config.rb', line 122

def password_hash
  @password_hash
end

#password_recoveryObject

If this field is empty, the “Allow administrator to reset my password” feature is turned off. If this field is filled, it contains a cryptographic root of trust that can decrypt and re-encrypt other secrets in this profile.



128
129
130
# File 'lib/comet/models/user_profile_config.rb', line 128

def password_recovery
  @password_recovery
end

#policyObject

The Policy field contains a read-only copy of the effective Policy that is applied to this user account.



113
114
115
# File 'lib/comet/models/user_profile_config.rb', line 113

def policy
  @policy
end

#policy_idObject

If the PolicyID field is set to a non-empty string, the Comet Server will enforce the contents of the Policy field based on the matching server’s policy. Otherwise if the PolicyID field is set to an empty string, the administrator may configure any custom values in the Policy field.



108
109
110
# File 'lib/comet/models/user_profile_config.rb', line 108

def policy_id
  @policy_id
end

#quota_office_365protected_accountsObject

A limit on the total number of Office 365 Protected Accounts across all Office 365 Protected Items in this account. Set to zero to allow unlimited Office 365 Protected Accounts.



102
103
104
# File 'lib/comet/models/user_profile_config.rb', line 102

def quota_office_365protected_accounts
  @quota_office_365protected_accounts
end

#require_password_changeObject

This field is available in Comet 20.3.4 and later.



147
148
149
# File 'lib/comet/models/user_profile_config.rb', line 147

def require_password_change
  @require_password_change
end

#send_email_reportsObject

This option can be used to control whether any email reports are sent.



51
52
53
# File 'lib/comet/models/user_profile_config.rb', line 51

def send_email_reports
  @send_email_reports
end

#server_configObject

Additional server-wide settings that are enforced for this user profile



160
161
162
# File 'lib/comet/models/user_profile_config.rb', line 160

def server_config
  @server_config
end

#sourcesObject

Protected Items The string keys can be any unique key. Using a GUID is recommended, but optional.



61
62
63
# File 'lib/comet/models/user_profile_config.rb', line 61

def sources
  @sources
end

#totpkeyObject

Returns the value of attribute totpkey.



143
144
145
# File 'lib/comet/models/user_profile_config.rb', line 143

def totpkey
  @totpkey
end

#totpkey_encryption_formatObject

One of the ENCRYPTIONMETHOD_ constants



140
141
142
# File 'lib/comet/models/user_profile_config.rb', line 140

def totpkey_encryption_format
  @totpkey_encryption_format
end

#unknown_json_fieldsObject

Returns the value of attribute unknown_json_fields.



163
164
165
# File 'lib/comet/models/user_profile_config.rb', line 163

def unknown_json_fields
  @unknown_json_fields
end

#usernameObject

The name for this account. It uniquely identifies this UserProfileConfig across the entire Comet Server. It cannot be changed directly.



19
20
21
# File 'lib/comet/models/user_profile_config.rb', line 19

def username
  @username
end

Instance Method Details

#clearObject



169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
# File 'lib/comet/models/user_profile_config.rb', line 169

def clear
  @username = ''
  @account_name = ''
  @local_timezone = ''
  @language_code = ''
  @organization_id = ''
  @emails = []
  @override_email_settings = {}
  @destinations = {}
  @sources = {}
  @backup_rules = {}
  @devices = {}
  @last_suspended = 0
  @all_protected_items_quota_bytes = 0
  @maximum_devices = 0
  @quota_office_365protected_accounts = 0
  @policy_id = ''
  @policy = Comet::UserPolicy.new
  @password_format = 0
  @password_hash = ''
  @password_recovery = ''
  @totpkey_encryption_format = 0
  @totpkey = ''
  @create_time = 0
  @creation_guid = ''
  @server_config = Comet::UserServerConfig.new
  @unknown_json_fields = {}
end

#from_hash(obj) ⇒ Object

Parameters:

  • obj (Hash)

    The complete object as a Ruby hash

Raises:

  • (TypeError)


206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
# File 'lib/comet/models/user_profile_config.rb', line 206

def from_hash(obj)
  raise TypeError, "'obj' expected Hash, got #{obj.class}" unless obj.is_a? Hash

  obj.each do |k, v|
    case k
    when 'Username'
      raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String

      @username = v
    when 'AccountName'
      raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String

      @account_name = v
    when 'LocalTimezone'
      raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String

      @local_timezone = v
    when 'LanguageCode'
      raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String

      @language_code = v
    when 'OrganizationID'
      raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String

      @organization_id = v
    when 'Emails'
      if v.nil?
        @emails = []
      else
        @emails = Array.new(v.length)
        v.each_with_index do |v1, i1|
          raise TypeError, "'v1' expected String, got #{v1.class}" unless v1.is_a? String

          @emails[i1] = v1
        end
      end
    when 'OverrideEmailSettings'
      @override_email_settings = {}
      if v.nil?
        @override_email_settings = {}
      else
        v.each do |k1, v1|
          @override_email_settings[k1] = Comet::UserCustomEmailSettings.new
          @override_email_settings[k1].from_hash(v1)
        end
      end
    when 'SendEmailReports'
      @send_email_reports = v
    when 'Destinations'
      @destinations = {}
      if v.nil?
        @destinations = {}
      else
        v.each do |k1, v1|
          @destinations[k1] = Comet::DestinationConfig.new
          @destinations[k1].from_hash(v1)
        end
      end
    when 'Sources'
      @sources = {}
      if v.nil?
        @sources = {}
      else
        v.each do |k1, v1|
          @sources[k1] = Comet::SourceConfig.new
          @sources[k1].from_hash(v1)
        end
      end
    when 'BackupRules'
      @backup_rules = {}
      if v.nil?
        @backup_rules = {}
      else
        v.each do |k1, v1|
          @backup_rules[k1] = Comet::BackupRuleConfig.new
          @backup_rules[k1].from_hash(v1)
        end
      end
    when 'Devices'
      @devices = {}
      if v.nil?
        @devices = {}
      else
        v.each do |k1, v1|
          @devices[k1] = Comet::DeviceConfig.new
          @devices[k1].from_hash(v1)
        end
      end
    when 'IsSuspended'
      @is_suspended = v
    when 'LastSuspended'
      raise TypeError, "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric

      @last_suspended = v
    when 'AllProtectedItemsQuotaEnabled'
      @all_protected_items_quota_enabled = v
    when 'AllProtectedItemsQuotaBytes'
      raise TypeError, "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric

      @all_protected_items_quota_bytes = v
    when 'MaximumDevices'
      raise TypeError, "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric

      @maximum_devices = v
    when 'QuotaOffice365ProtectedAccounts'
      raise TypeError, "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric

      @quota_office_365protected_accounts = v
    when 'PolicyID'
      raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String

      @policy_id = v
    when 'Policy'
      @policy = Comet::UserPolicy.new
      @policy.from_hash(v)
    when 'PasswordFormat'
      raise TypeError, "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric

      @password_format = v
    when 'PasswordHash'
      raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String

      @password_hash = v
    when 'PasswordRecovery'
      raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String

      @password_recovery = v
    when 'AllowPasswordLogin'
      @allow_password_login = v
    when 'AllowPasswordAndTOTPLogin'
      @allow_password_and_totplogin = v
    when 'TOTPKeyEncryptionFormat'
      raise TypeError, "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric

      @totpkey_encryption_format = v
    when 'TOTPKey'
      raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String

      @totpkey = v
    when 'RequirePasswordChange'
      @require_password_change = v
    when 'CreateTime'
      raise TypeError, "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric

      @create_time = v
    when 'CreationGUID'
      raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String

      @creation_guid = v
    when 'ServerConfig'
      @server_config = Comet::UserServerConfig.new
      @server_config.from_hash(v)
    else
      @unknown_json_fields[k] = v
    end
  end
end

#from_json(json_string) ⇒ Object

Parameters:

  • json_string (String)

    The complete object in JSON format

Raises:

  • (TypeError)


199
200
201
202
203
# File 'lib/comet/models/user_profile_config.rb', line 199

def from_json(json_string)
  raise TypeError, "'json_string' expected String, got #{json_string.class}" unless json_string.is_a? String

  from_hash(JSON.parse(json_string))
end

#to_hHash

Returns The complete object as a Ruby hash.

Returns:

  • (Hash)

    The complete object as a Ruby hash



413
414
415
# File 'lib/comet/models/user_profile_config.rb', line 413

def to_h
  to_hash
end

#to_hashHash

Returns The complete object as a Ruby hash.

Returns:

  • (Hash)

    The complete object as a Ruby hash



365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
# File 'lib/comet/models/user_profile_config.rb', line 365

def to_hash
  ret = {}
  ret['Username'] = @username
  ret['AccountName'] = @account_name
  ret['LocalTimezone'] = @local_timezone
  ret['LanguageCode'] = @language_code
  unless @organization_id.nil?
    ret['OrganizationID'] = @organization_id
  end
  ret['Emails'] = @emails
  ret['OverrideEmailSettings'] = @override_email_settings
  ret['SendEmailReports'] = @send_email_reports
  ret['Destinations'] = @destinations
  ret['Sources'] = @sources
  ret['BackupRules'] = @backup_rules
  ret['Devices'] = @devices
  ret['IsSuspended'] = @is_suspended
  unless @last_suspended.nil?
    ret['LastSuspended'] = @last_suspended
  end
  ret['AllProtectedItemsQuotaEnabled'] = @all_protected_items_quota_enabled
  ret['AllProtectedItemsQuotaBytes'] = @all_protected_items_quota_bytes
  ret['MaximumDevices'] = @maximum_devices
  ret['QuotaOffice365ProtectedAccounts'] = @quota_office_365protected_accounts
  ret['PolicyID'] = @policy_id
  ret['Policy'] = @policy
  ret['PasswordFormat'] = @password_format
  ret['PasswordHash'] = @password_hash
  unless @password_recovery.nil?
    ret['PasswordRecovery'] = @password_recovery
  end
  ret['AllowPasswordLogin'] = @allow_password_login
  ret['AllowPasswordAndTOTPLogin'] = @allow_password_and_totplogin
  ret['TOTPKeyEncryptionFormat'] = @totpkey_encryption_format
  ret['TOTPKey'] = @totpkey
  ret['RequirePasswordChange'] = @require_password_change
  ret['CreateTime'] = @create_time
  ret['CreationGUID'] = @creation_guid
  unless @server_config.nil?
    ret['ServerConfig'] = @server_config
  end
  @unknown_json_fields.each do |k, v|
    ret[k] = v
  end
  ret
end

#to_json(options = {}) ⇒ String

Returns The complete object as a JSON string.

Returns:

  • (String)

    The complete object as a JSON string



418
419
420
# File 'lib/comet/models/user_profile_config.rb', line 418

def to_json(options = {})
  to_hash.to_json(options)
end