Module: OpenDirectoryUtils::CommandsUserAttribs

Includes:
CleanCheck, CommandsBase
Included in:
CommandsUserCreateRemove, Connection
Defined in:
lib/open_directory_utils/commands_user_attribs.rb

Overview

Instance Method Summary collapse

Methods included from CommandsBase

#build_dscl_command, #build_dseditgroup_command, #build_pwpolicy_command, #dscl, #dseditgroup, #pwpolicy

Methods included from CleanCheck

#assert, #check_critical_attribute, #group_record_name_alternatives, #tidy_attribs, #user_record_name_alternatives

Instance Method Details

#user_add_to_group(attribs, dir_info) ⇒ Object



337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 337

def user_add_to_group(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)

  attribs[:value] = attribs[:group_membership]
  attribs[:value] = attribs[:value] || attribs[:groupmembership]
  attribs[:value] = attribs[:value] || attribs[:group_name]
  attribs[:value] = attribs[:value] || attribs[:groupname]
  attribs[:value] = attribs[:value] || attribs[:gid]

  check_critical_attribute( attribs, :record_name, :username )
  check_critical_attribute( attribs, :value, :groupname )
  attribs    = tidy_attribs(attribs)
  command    = { operation: 'edit', action: 'add', type: 'user'}
  user_attrs  = attribs.merge(command)

  answer = dseditgroup( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_append_chat(attribs, dir_info) ⇒ Object

first - /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER apple-imhandle “$VALUE” /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER apple-imhandle “AIM:created: $CREATE”



438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 438

def user_append_chat(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)
  check_critical_attribute( attribs, :record_name )

  attribs[:value] = attribs[:value] || attribs[:im_handle]
  attribs[:value] = attribs[:value] || attribs[:imhandle]
  attribs[:value] = attribs[:value] || attribs[:handle]
  attribs[:value] = attribs[:value] || attribs[:chat]
  attribs[:value] = attribs[:value] || attribs[:im]

  check_critical_attribute( attribs, :value, :chat )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'append', scope: 'Users', attribute: 'IMHandle'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_append_email(attribs, dir_info) ⇒ Object



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
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 219

def user_append_email(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)

  attribs[:value] = attribs[:value] || attribs['apple-user-mailattribute']
  attribs[:value] = attribs[:value] || attribs[:apple_user_mailattribute]
  attribs[:value] = attribs[:value] || attribs[:e_mail_attribute]
  attribs[:value] = attribs[:value] || attribs[:mail_attribute]
  attribs[:value] = attribs[:value] || attribs[:email]
  attribs[:value] = attribs[:value] || attribs[:mail]

  check_critical_attribute( attribs, :record_name )
  check_critical_attribute( attribs, :value, :email )
  attribs    = tidy_attribs(attribs)

  answer     = []

  # command    = {action: 'append', scope: 'Users', attribute: 'mail'}
  # user_attrs = attribs.merge(command)
  # answer    << dscl( user_attrs, dir_info )

  command    = {action: 'append', scope: 'Users', attribute: 'email'}
  user_attrs = attribs.merge(command)
  answer    << dscl( user_attrs, dir_info )

  attribs[:value] = nil
  return answer
end

#user_append_keyword(attribs, dir_info) ⇒ Object Also known as: user_append_keywords

/usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$shortname_USERNAME apple-keyword “$VALUE”



615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 615

def user_append_keyword(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)
  check_critical_attribute( attribs, :record_name )

  attribs[:value] = attribs[:value] || attribs[:keywords]
  attribs[:value] = attribs[:value] || attribs[:keyword]

  check_critical_attribute( attribs, :value, :keyword )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'append', scope: 'Users', attribute: 'Keywords'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_create_chat(attribs, dir_info) ⇒ Object

first - /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER apple-imhandle “$VALUE” /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER apple-imhandle “AIM:created: $CREATE”



415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 415

def user_create_chat(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)
  check_critical_attribute( attribs, :record_name )

  attribs[:value] = attribs[:value] || attribs[:im_handle]
  attribs[:value] = attribs[:value] || attribs[:imhandle]
  attribs[:value] = attribs[:value] || attribs[:handle]
  attribs[:value] = attribs[:value] || attribs[:chat]
  attribs[:value] = attribs[:value] || attribs[:im]

  check_critical_attribute( attribs, :value, :chat )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'IMHandle'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_create_keyword(attribs, dir_info) ⇒ Object Also known as: user_create_keywords

1st keyword – /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-keyword “$VALUE” other keywords – /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$shortname_USERNAME apple-keyword “$VALUE”



595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 595

def user_create_keyword(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)
  check_critical_attribute( attribs, :record_name )

  attribs[:value] = attribs[:value] || attribs[:keywords]
  attribs[:value] = attribs[:value] || attribs[:keyword]

  check_critical_attribute( attribs, :value, :keyword )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'Keywords'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_disable_login(attribs, dir_info) ⇒ Object

/usr/bin/pwpolicy -a diradmin -p A-B1g-S3cret -u $shortname_USERNAME -setpolicy “isDisabled=1”



323
324
325
326
327
328
329
330
331
332
333
334
335
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 323

def (attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)

  check_critical_attribute( attribs, :record_name )
  attribs    = tidy_attribs(attribs)

  command = {attribute: 'disableuser', value: nil}
  params  = command.merge(attribs)
  # pwpolicy(params, dir_info)
  answer = pwpolicy(params, dir_info)
  attribs[:value] = nil
  return answer
end

#user_enable_login(attribs, dir_info) ⇒ Object

/usr/bin/pwpolicy -a diradmin -p A-B1g-S3cret -u $shortname_USERNAME -setpolicy “isDisabled=0”



312
313
314
315
316
317
318
319
320
321
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 312

def (attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)

  check_critical_attribute( attribs, :record_name )
  attribs    = tidy_attribs(attribs)

  command = {attribute: 'enableuser', value: nil}
  params  = command.merge(attribs)
  pwpolicy(params, dir_info)
end

#user_exists?(attribs, dir_info) ⇒ Boolean

get all usernames – dscl . -list /Users get all user details – dscl . -readall /Users

Returns:



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

def user_exists?(attribs, dir_info)
  user_get_info(attribs, dir_info)
end

#user_get_info(attribs, dir_info) ⇒ Object Also known as: user_info

GET INFO

get user record – dscl . -read /Users/<username> get user value – dscl . -read /Users/<username> <key> search od user – dscl . -search /Users RealName “Andrew Garrett” return as xml – dscl -plist . -search /Users RealName “Andrew Garrett”



23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 23

def user_get_info(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)

  check_critical_attribute( attribs, :record_name )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'read', scope: 'Users', attribute: nil, value: nil}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_get_policy(attribs, dir_info) ⇒ Object Also known as: user_login_enabled?

/usr/bin/pwpolicy -a diradmin -p A-B1g-S3cret -u $shortname_USERNAME -getpolicy



378
379
380
381
382
383
384
385
386
387
388
389
390
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 378

def user_get_policy(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)

  check_critical_attribute( attribs, :record_name )
  attribs    = tidy_attribs(attribs)

  command = {attribute: 'getpolicy', value: nil}
  params  = command.merge(attribs)

  answer = pwpolicy(params, dir_info)
  attribs[:value] = nil
  return answer
end

#user_password_verified?(attribs, dir_info) ⇒ Boolean Also known as: user_password_ok?

/usr/bin/dscl /LDAPv3/127.0.0.1 -auth #shortname “#passwd”

Returns:



292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 292

def user_password_verified?(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)

  attribs[:value] = attribs[:value] || attribs[:password]
  attribs[:value] = attribs[:value] || attribs[:passwd]

  check_critical_attribute( attribs, :record_name )
  check_critical_attribute( attribs, :value, :password )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'auth', scope: 'Users'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_remove_from_group(attribs, dir_info) ⇒ Object



357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 357

def user_remove_from_group(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)

  attribs[:value] = attribs[:group_membership]
  attribs[:value] = attribs[:value] || attribs[:groupmembership]
  attribs[:value] = attribs[:value] || attribs[:group_name]
  attribs[:value] = attribs[:value] || attribs[:groupname]
  attribs[:value] = attribs[:value] || attribs[:gid]

  check_critical_attribute( attribs, :record_name, :username )
  check_critical_attribute( attribs, :value, :groupname )
  attribs    = tidy_attribs(attribs)
  command    = { operation: 'edit', action: 'delete', type: 'user'}
  user_attrs  = attribs.merge(command)

  answer = dseditgroup( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_chat(attribs, dir_info) ⇒ Object Also known as: user_set_im_handle, user_set_chat_channels

first - /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER apple-imhandle “$VALUE” others - /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$USER apple-imhandle “$VALUE” /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER apple-imhandle “AIM:created: $CREATE” /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$USER apple-imhandle “ICQ:start: $START” /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$USER apple-imhandle “MSN:end: $END”

Raises:



464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 464

def user_set_chat(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)
  check_critical_attribute( attribs, :record_name )

  attribs[:values] = attribs[:values] || attribs[:im_handle]
  attribs[:values] = attribs[:values] || attribs[:imhandle]
  attribs[:values] = attribs[:values] || attribs[:handle]
  attribs[:values] = attribs[:values] || attribs[:chat]
  attribs[:values] = attribs[:values] || attribs[:im]

  answer = []
  Array(attribs[:values]).each_with_index do |value, index|
    attribs[:value] = value
    case index
    when 0
      answer << user_create_chat(attribs, dir_info)
    else
      answer << user_append_chat(attribs, dir_info)
    end
  end
  attribs[:value] = nil
  return answer  unless attribs[:values].nil? or attribs[:values].empty?
  raise ArgumentError, "values: '#{attribs[:values].inspect}' invalid, value_name: :chats"
end

#user_set_city(attribs, dir_info) ⇒ Object



393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 393

def user_set_city(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)
  check_critical_attribute( attribs, :record_name )

  attribs[:value] = attribs[:value] || attribs[:locale]
  attribs[:value] = attribs[:value] || attribs[:city]
  attribs[:value] = attribs[:value] || attribs[:town]
  attribs[:value] = attribs[:value] || attribs[:l]

  check_critical_attribute( attribs, :value, :city )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'City'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_comment(attribs, dir_info) ⇒ Object Also known as: user_set_description



495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 495

def user_set_comment(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)
  check_critical_attribute( attribs, :record_name )

  attribs[:value] = attribs[:value] || attribs[:description]
  attribs[:value] = attribs[:value] || attribs[:comment]

  check_critical_attribute( attribs, :value, :comment )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'Comment'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_company(attribs, dir_info) ⇒ Object

/usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-company “$VALUE”



515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 515

def user_set_company(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)
  check_critical_attribute( attribs, :record_name )

  attribs[:value] = attribs[:value] || attribs[:company]

  check_critical_attribute( attribs, :value, :company )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'Company'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_country(attribs, dir_info) ⇒ Object

alias_method :las_program_info, :user_set_company



533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 533

def user_set_country(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)
  check_critical_attribute( attribs, :record_name )

  attribs[:value] = attribs[:value] || attribs[:country]
  attribs[:value] = attribs[:value] || attribs[:c]

  check_critical_attribute( attribs, :value, :country )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'Country'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_department(attribs, dir_info) ⇒ Object



551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 551

def user_set_department(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)
  check_critical_attribute( attribs, :record_name )

  attribs[:value] = attribs[:value] || attribs[:department_number]
  attribs[:value] = attribs[:value] || attribs[:departmentnumber]
  attribs[:value] = attribs[:value] || attribs[:dept_number]
  attribs[:value] = attribs[:value] || attribs[:deptnumber]
  attribs[:value] = attribs[:value] || attribs[:department]
  attribs[:value] = attribs[:value] || attribs[:dept]

  check_critical_attribute( attribs, :value, :department )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'Department'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_first_email(attribs, dir_info) ⇒ Object Also known as: user_set_email

/usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME mail “$VALUE” /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME email “$VALUE” /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-user-mailattribute “$VALUE”



189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 189

def user_set_first_email(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)

  attribs[:value] = attribs[:value] || attribs['apple-user-mailattribute']
  attribs[:value] = attribs[:value] || attribs[:apple_user_mailattribute]
  attribs[:value] = attribs[:value] || attribs[:email]
  attribs[:value] = attribs[:value] || attribs[:mail]

  check_critical_attribute( attribs, :record_name )
  check_critical_attribute( attribs, :value, :email )
  attribs    = tidy_attribs(attribs)

  answer     = []

  command    = {action: 'create', scope: 'Users', attribute: 'MailAttribute'}
  user_attrs = attribs.merge(command)
  answer    << dscl( user_attrs, dir_info )

  command    = {action: 'create', scope: 'Users', attribute: 'EMailAddress'}
  user_attrs = attribs.merge(command)
  answer    << dscl( user_attrs, dir_info )

  # command    = {action: 'create', scope: 'Users', attribute: 'apple-user-mailattribute'}
  # user_attrs = attribs.merge(command)
  # answer    << dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_first_name(attribs, dir_info) ⇒ Object

/usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME FirstName “$VALUE”



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 74

def user_set_first_name(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)

  attribs[:value] = attribs[:value] || attribs[:given_name]
  attribs[:value] = attribs[:value] || attribs[:givenname]
  attribs[:value] = attribs[:value] || attribs[:first_name]
  attribs[:value] = attribs[:value] || attribs[:firstname]

  check_critical_attribute( attribs, :record_name )
  check_critical_attribute( attribs, :value, :first_name )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'FirstName'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_home_phone(attribs, dir_info) ⇒ Object

/usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$shortname_USERNAME apple-keyword “$VALUE”



659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 659

def user_set_home_phone(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)
  check_critical_attribute( attribs, :record_name )

  attribs[:value] = attribs[:value] || attribs[:home_phone_number]
  attribs[:value] = attribs[:value] || attribs[:home_number]
  attribs[:value] = attribs[:value] || attribs[:home_phone]

  check_critical_attribute( attribs, :value, :home_phone )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'HomePhoneNumber'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_job_title(attribs, dir_info) ⇒ Object Also known as: user_set_title



573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 573

def user_set_job_title(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)
  check_critical_attribute( attribs, :record_name )

  attribs[:value] = attribs[:value] || attribs[:job_title]
  attribs[:value] = attribs[:value] || attribs[:jobtitle]
  attribs[:value] = attribs[:value] || attribs[:title]

  check_critical_attribute( attribs, :value, :job_title )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'JobTitle'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_keywords(attribs, dir_info) ⇒ Object Also known as: user_set_keyword

/usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$shortname_USERNAME apple-keyword “$VALUE”

Raises:



635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 635

def user_set_keywords(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)
  check_critical_attribute( attribs, :record_name )

  attribs[:values] = attribs[:values] || attribs[:keywords]
  attribs[:values] = attribs[:values] || attribs[:keyword]

  answer = []
  Array(attribs[:values]).each_with_index do |value, index|
    attribs[:value] = value

    case index
    when 0
      answer << user_create_keyword(attribs, dir_info)
    else
      answer << user_append_keyword(attribs, dir_info)
    end
  end
  return answer  unless attribs[:values].nil? or attribs[:values].empty?
  raise ArgumentError, "values: '#{attribs[:values].inspect}' invalid, value_name: :keywords"
end

#user_set_last_name(attribs, dir_info) ⇒ Object

/usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME LastName “$VALUE”



95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 95

def user_set_last_name(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)

  attribs[:value] = attribs[:value] || attribs[:sn]
  attribs[:value] = attribs[:value] || attribs[:surname]
  attribs[:value] = attribs[:value] || attribs[:lastname]
  attribs[:value] = attribs[:value] || attribs[:last_name]
  attribs[:value] = attribs[:value] || attribs[:real_name]
  attribs[:value] = attribs[:value] || attribs[:realname]
  attribs[:value] = attribs[:value] || attribs[:short_name]
  attribs[:value] = attribs[:value] || attribs[:shortname]
  attribs[:value] = attribs[:value] || attribs[:user_name]
  attribs[:value] = attribs[:value] || attribs[:username]
  attribs[:value] = attribs[:value] || attribs[:uid]

  check_critical_attribute( attribs, :record_name )
  check_critical_attribute( attribs, :value, :last_name )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'LastName'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_mobile_phone(attribs, dir_info) ⇒ Object Also known as: user_set_mobile_number, user_set_mobile_phone_number

/usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$shortname_USERNAME apple-keyword “$VALUE”



679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 679

def user_set_mobile_phone(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)
  check_critical_attribute( attribs, :record_name )

  attribs[:value] = attribs[:value] || attribs[:mobile_phone_number]
  attribs[:value] = attribs[:value] || attribs[:mobile_number]
  attribs[:value] = attribs[:value] || attribs[:mobile_phone]

  check_critical_attribute( attribs, :value, :mobile_phone )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'MobileNumber'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_name_suffix(attribs, dir_info) ⇒ Object

/usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$shortname_USERNAME apple-keyword “$VALUE”



724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 724

def user_set_name_suffix(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)
  check_critical_attribute( attribs, :record_name )

  attribs[:value] = attribs[:value] || attribs[:name_suffix]
  attribs[:value] = attribs[:value] || attribs[:suffix]
  check_critical_attribute( attribs, :value, :name_suffix )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'NameSuffix'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_nfs_home_directory(attribs, dir_info) ⇒ Object

/usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/someuser NFSHomeDirectory /Users/someuser



147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 147

def user_set_nfs_home_directory(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)

  attribs[:value] = attribs[:value] || attribs[:home_directory]
  attribs[:value] = attribs[:value] || attribs[:nfs_home_directory]
  attribs[:value] = attribs[:value] || '/Volumes/Macintosh HD/Users/someone'

  check_critical_attribute( attribs, :record_name )
  check_critical_attribute( attribs, :value, :home_directory )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'NFSHomeDirectory'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_organization_info(attribs, dir_info) ⇒ Object Also known as: user_set_org_info



741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 741

def user_set_organization_info(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)
  check_critical_attribute( attribs, :record_name )

  attribs[:value] = attribs[:value] || attribs[:organization_info]
  attribs[:value] = attribs[:value] || attribs[:organization]
  attribs[:value] = attribs[:value] || attribs[:org_info]
  attribs[:value] = attribs[:value] || attribs[:org]
  check_critical_attribute( attribs, :value, :organization_info )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'OrganizationInfo'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_password(attribs, dir_info) ⇒ Object

/usr/bin/pwpolicy -a diradmin -p “TopSecret” -u username -setpassword “AnotherSecret” /usr/bin/dscl -plist -u diradmin -P #adminpw /LDAPv3/127.0.0.1 -passwd /Users/#shortname “#passwd”



273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 273

def user_set_password(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)

  attribs[:value] = attribs[:value] || attribs[:password]
  attribs[:value] = attribs[:value] || attribs[:passwd]
  attribs[:value] = attribs[:value] || '*'

  check_critical_attribute( attribs, :record_name )
  check_critical_attribute( attribs, :value, :password )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'passwd', scope: 'Users'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_postal_code(attribs, dir_info) ⇒ Object Also known as: user_set_post_code, user_set_zip_code

/usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-webloguri “$VALUE”



763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 763

def user_set_postal_code(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)
  check_critical_attribute( attribs, :record_name )

  attribs[:value] = attribs[:value] || attribs[:postal_code]
  attribs[:value] = attribs[:value] || attribs[:post_code]
  attribs[:value] = attribs[:value] || attribs[:zip_code]
  attribs[:value] = attribs[:value] || attribs[:zip]
  check_critical_attribute( attribs, :value, :postal_code )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'PostalCode'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_primary_group_id(attribs, dir_info) ⇒ Object

sudo dscl . -create /Users/someuser PrimaryGroupID 80



248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 248

def user_set_primary_group_id(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)

  attribs[:value] = attribs[:value] || attribs[:groupid]
  attribs[:value] = attribs[:value] || attribs[:group_id]
  attribs[:value] = attribs[:value] || attribs[:gidnumber]
  attribs[:value] = attribs[:value] || attribs[:groupnumber]
  attribs[:value] = attribs[:value] || attribs[:group_number]
  attribs[:value] = attribs[:value] || attribs[:primarygroupid]
  attribs[:value] = attribs[:value] || attribs[:primary_group_id]

  check_critical_attribute( attribs, :record_name )
  check_critical_attribute( attribs, :value, :group_id )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'PrimaryGroupID'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_real_name(attribs, dir_info) ⇒ Object

CHANGE OD

/usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER RealName “$VALUE”



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 47

def user_set_real_name(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)

  attribs[:value] = attribs[:value] || attribs[:common_name]
  attribs[:value] = attribs[:value] || attribs[:cn]
  attribs[:value] = attribs[:value] || attribs[:realname]
  attribs[:value] = attribs[:value] || attribs[:real_name]
  attribs[:value] = attribs[:value] || attribs[:fullname]
  attribs[:value] = attribs[:value] || attribs[:full_name]
  if attribs[:last_name] or attribs[:first_name]
    attribs[:value] = attribs[:value] || "#{attribs[:first_name]} #{attribs[:last_name]}"
  end
  attribs[:value] = attribs[:value] || attribs[:record_name]

  check_critical_attribute( attribs, :record_name )
  check_critical_attribute( attribs, :value, :real_name )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'RealName'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_relationships(attribs, dir_info) ⇒ Object

alias_method :las_sync_date, :user_set_weblog



785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 785

def user_set_relationships(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)
  check_critical_attribute( attribs, :record_name )

  attribs[:value] = attribs[:value] || attribs[:relationships]
  attribs[:value] = attribs[:value] || attribs[:relations]
  check_critical_attribute( attribs, :value, :relationships )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'Relationships'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_shell(attribs, dir_info) ⇒ Object

sudo dscl . -create /Users/someuser UserShell /bin/bash



167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 167

def user_set_shell(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)

  attribs[:value] = attribs[:value] || attribs[:user_shell]
  attribs[:value] = attribs[:value] || attribs[:shell]
  attribs[:value] = attribs[:value] || '/bin/bash'

  check_critical_attribute( attribs, :record_name )
  check_critical_attribute( attribs, :value, :shell )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'UserShell'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_state(attribs, dir_info) ⇒ Object



802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 802

def user_set_state(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)
  check_critical_attribute( attribs, :record_name )

  attribs[:value] = attribs[:value] || attribs[:state]
  attribs[:value] = attribs[:value] || attribs[:st]
  check_critical_attribute( attribs, :value, :state )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'State'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_street(attribs, dir_info) ⇒ Object Also known as: user_set_address



819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 819

def user_set_street(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)
  check_critical_attribute( attribs, :record_name )

  attribs[:value] = attribs[:value] || attribs[:address]
  attribs[:value] = attribs[:value] || attribs[:street]
  check_critical_attribute( attribs, :value, :street )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'Street'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_unique_id(attribs, dir_info) ⇒ Object

sudo dscl . -create /Users/someuser UniqueID “1010”



123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 123

def user_set_unique_id(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)
  check_critical_attribute( attribs, :record_name )

  attribs[:value] = attribs[:value] || attribs[:uniqueid]
  attribs[:value] = attribs[:value] || attribs[:unique_id]
  attribs[:value] = attribs[:value] || attribs[:uid_number]
  attribs[:value] = attribs[:value] || attribs[:uidnumber]
  attribs[:value] = attribs[:value] || attribs[:usernumber]
  attribs[:value] = attribs[:value] || attribs[:user_number]

  check_critical_attribute( attribs, :value, :unique_id )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'UniqueID'}
  user_attrs = attribs.merge(command)

  # dscl( user_attrs, dir_info )
  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_weblog(attribs, dir_info) ⇒ Object Also known as: user_set_blog

/usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-webloguri “$VALUE”



838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 838

def user_set_weblog(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)
  check_critical_attribute( attribs, :record_name )

  attribs[:value] = attribs[:value] || attribs[:weblog]
  attribs[:value] = attribs[:value] || attribs[:blog]
  check_critical_attribute( attribs, :value, :weblog )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'WeblogURI'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end

#user_set_work_phone(attribs, dir_info) ⇒ Object

/usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$shortname_USERNAME apple-keyword “$VALUE”



701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
# File 'lib/open_directory_utils/commands_user_attribs.rb', line 701

def user_set_work_phone(attribs, dir_info)
  attribs = user_record_name_alternatives(attribs)
  check_critical_attribute( attribs, :record_name )

  attribs[:value] = attribs[:value] || attribs[:work_phone_number]
  attribs[:value] = attribs[:value] || attribs[:phone_number]
  attribs[:value] = attribs[:value] || attribs[:work_number]
  attribs[:value] = attribs[:value] || attribs[:work_phone]
  attribs[:value] = attribs[:value] || attribs[:number]
  attribs[:value] = attribs[:value] || attribs[:phone]

  check_critical_attribute( attribs, :value, :work_phone )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'create', scope: 'Users', attribute: 'PhoneNumber'}
  user_attrs = attribs.merge(command)

  answer = dscl( user_attrs, dir_info )
  attribs[:value] = nil
  return answer
end