open_directory_utils 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,6 @@
1
1
  require "open_directory_utils/dscl"
2
2
  require "open_directory_utils/clean_check"
3
+ require "open_directory_utils/commands_base"
3
4
 
4
5
  module OpenDirectoryUtils
5
6
 
@@ -9,10 +10,11 @@ module OpenDirectoryUtils
9
10
  # * https://superuser.com/questions/592921/mac-osx-users-vs-dscl-command-to-list-user/621055?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
10
11
  module CommandsUserAttribsLdap
11
12
 
12
- include OpenDirectoryUtils::Dscl
13
+ # include OpenDirectoryUtils::Dscl
13
14
  include OpenDirectoryUtils::CleanCheck
15
+ include OpenDirectoryUtils::CommandsBase
14
16
 
15
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$USER cn "$NAME"
17
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER cn "$NAME"
16
18
  def user_set_common_name(attribs, dir_info)
17
19
  attribs = user_record_name_alternatives(attribs)
18
20
 
@@ -34,7 +36,7 @@ module OpenDirectoryUtils
34
36
  end
35
37
  alias_method :user_set_cn, :user_set_common_name
36
38
 
37
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME givenName "$VALUE"
39
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME givenName "$VALUE"
38
40
  def user_set_given_name(attribs, dir_info)
39
41
  attribs = user_record_name_alternatives(attribs)
40
42
 
@@ -51,7 +53,7 @@ module OpenDirectoryUtils
51
53
  dscl( user_attrs, dir_info )
52
54
  end
53
55
 
54
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME sn "$VALUE"
56
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME sn "$VALUE"
55
57
  def user_set_surname(attribs, dir_info)
56
58
  attribs = user_record_name_alternatives(attribs)
57
59
 
@@ -107,7 +109,7 @@ module OpenDirectoryUtils
107
109
  dscl( user_attrs, dir_info )
108
110
  end
109
111
 
110
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME homedirectory "$VALUE"
112
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME homedirectory "$VALUE"
111
113
  def user_set_home_directory(attribs, dir_info)
112
114
  attribs = user_record_name_alternatives(attribs)
113
115
 
@@ -125,7 +127,7 @@ module OpenDirectoryUtils
125
127
  dscl( user_attrs, dir_info )
126
128
  end
127
129
 
128
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME loginShell "$VALUE"
130
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME loginShell "$VALUE"
129
131
  def user_set_login_shell(attribs, dir_info)
130
132
  attribs = user_record_name_alternatives(attribs)
131
133
 
@@ -146,9 +148,9 @@ module OpenDirectoryUtils
146
148
 
147
149
  # OTHER FIELDS
148
150
  #####################
149
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME mail "$VALUE"
150
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME email "$VALUE"
151
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME apple-user-mailattribute "$VALUE"
151
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME mail "$VALUE"
152
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME email "$VALUE"
153
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-user-mailattribute "$VALUE"
152
154
  def user_set_first_email(attribs, dir_info)
153
155
  attribs = user_record_name_alternatives(attribs)
154
156
 
@@ -218,117 +220,59 @@ module OpenDirectoryUtils
218
220
  dscl( user_attrs, dir_info )
219
221
  end
220
222
 
221
- # https://images.apple.com/server/docs/Command_Line.pdf
222
- # https://serverfault.com/questions/20702/how-do-i-create-user-accounts-from-the-terminal-in-mac-os-x-10-5?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
223
- # https://superuser.com/questions/1154564/how-to-create-a-user-from-the-macos-command-line
224
- def user_create_min(attribs, dir_info)
225
- attribs = user_record_name_alternatives(attribs)
226
-
227
- check_critical_attribute( attribs, :record_name )
228
- attribs = tidy_attribs(attribs)
229
-
230
- command = {action: 'create', scope: 'Users', value: nil, attribute: nil}
231
- user_attrs = attribs.merge(command)
232
-
233
- dscl( user_attrs, dir_info )
234
-
235
- answer = []
236
- attribs[:value] = nil
237
- answer << dscl( user_attrs, dir_info )
238
- attribs[:value] = nil
239
- answer << user_set_password(attribs, dir_info)
240
- attribs[:value] = nil
241
- answer << user_set_real_name(attribs, dir_info)
242
-
243
- return answer
244
- end
245
-
246
- # https://images.apple.com/server/docs/Command_Line.pdf
247
- # https://serverfault.com/questions/20702/how-do-i-create-user-accounts-from-the-terminal-in-mac-os-x-10-5?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
248
- # https://superuser.com/questions/1154564/how-to-create-a-user-from-the-macos-command-line
249
- def user_create_full(attribs, dir_info)
250
- attribs = user_record_name_alternatives(attribs)
251
-
252
- check_critical_attribute( attribs, :record_name )
253
- attribs = tidy_attribs(attribs).dup
254
-
255
- answer = []
256
- attribs[:value] = nil
257
- answer << user_create_min(attribs, dir_info)
258
- attribs[:value] = nil
259
- answer << user_set_shell(attribs, dir_info)
260
- attribs[:value] = nil
261
- answer << user_set_first_name(attribs, dir_info)
262
- attribs[:value] = nil
263
- answer << user_set_last_name(attribs, dir_info)
264
- attribs[:value] = nil
265
- answer << user_set_unique_id(attribs, dir_info)
266
- attribs[:value] = nil
267
- answer << user_set_primary_group_id(attribs, dir_info)
268
- attribs[:value] = nil
269
- answer << user_set_nfs_home_directory(attribs, dir_info)
270
- # skip email if non-sent
271
- unless attribs[:email].nil? and attribs[:mail].nil? and attribs[:apple_user_mailattribute].nil?
272
- attribs[:value] = nil
273
- answer << user_set_email(attribs, dir_info)
274
- end
275
-
276
- return answer.flatten
277
- end
278
-
279
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME mobile "$VALUE"
223
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME mobile "$VALUE"
280
224
  def user_set_mobile_phone
281
225
  end
282
226
 
283
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME telephoneNumber "$VALUE"
227
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME telephoneNumber "$VALUE"
284
228
  def user_set_work_phone
285
229
  end
286
230
 
287
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME homePhone "$VALUE"
231
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME homePhone "$VALUE"
288
232
  def user_set_home_phone
289
233
  end
290
234
 
291
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME title "$VALUE"
235
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME title "$VALUE"
292
236
  def user_set_title
293
237
  end
294
238
 
295
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME departmentNumber "$VALUE"
239
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME departmentNumber "$VALUE"
296
240
  def user_set_department
297
241
  end
298
242
 
299
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME street "$VALUE"
243
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME street "$VALUE"
300
244
  def user_set_street
301
245
  end
302
246
  alias_method :las_set_dorm, :user_set_street
303
247
  alias_method :las_set_housing, :user_set_street
304
248
 
305
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname l "$VALUE"
249
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname l "$VALUE"
306
250
  def user_set_city
307
251
  end
308
252
  alias_method :las_, :user_set_city
309
253
 
310
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME st "$VALUE"
254
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME st "$VALUE"
311
255
  def user_set_state
312
256
  end
313
257
  alias_method :las_cultural_trip, :user_set_state
314
258
 
315
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME postalCode "$VALUE"
259
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME postalCode "$VALUE"
316
260
  def user_set_postcode
317
261
  end
318
262
  alias_method :las_faculty_family, :user_set_postcode
319
263
 
320
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$USER c "$VALUE"
264
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER c "$VALUE"
321
265
  def user_set_country
322
266
  end
323
267
 
324
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME labeledURI "$VALUE"
268
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME labeledURI "$VALUE"
325
269
  def user_set_homepage
326
270
  end
327
271
  alias_method :user_set_webpage, :user_set_homepage
328
272
  alias_method :las_enrollment_date, :user_set_homepage
329
273
  alias_method :las_begin_date, :user_set_homepage
330
274
 
331
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$USER description "$NAME"
275
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER description "$NAME"
332
276
  def user_set_comments
333
277
  end
334
278
  alias_method :user_set_description, :user_set_comments
@@ -1,5 +1,6 @@
1
1
  require "open_directory_utils/dscl"
2
2
  require "open_directory_utils/clean_check"
3
+ require "open_directory_utils/commands_base"
3
4
 
4
5
  module OpenDirectoryUtils
5
6
 
@@ -9,8 +10,9 @@ module OpenDirectoryUtils
9
10
  # * https://superuser.com/questions/592921/mac-osx-users-vs-dscl-command-to-list-user/621055?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
10
11
  module CommandsUserAttribsOd
11
12
 
12
- include OpenDirectoryUtils::Dscl
13
+ # include OpenDirectoryUtils::Dscl
13
14
  include OpenDirectoryUtils::CleanCheck
15
+ include OpenDirectoryUtils::CommandsBase
14
16
 
15
17
  # GET INFO
16
18
  ##########
@@ -39,16 +41,17 @@ module OpenDirectoryUtils
39
41
 
40
42
  # CHANGE OD
41
43
  ###########
42
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$USER RealName "$VALUE"
44
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER RealName "$VALUE"
43
45
  def user_set_real_name(attribs, dir_info)
44
46
  attribs = user_record_name_alternatives(attribs)
45
47
 
48
+ attribs[:value] = attribs[:value] || attribs[:common_name]
46
49
  attribs[:value] = attribs[:value] || attribs[:cn]
47
50
  attribs[:value] = attribs[:value] || attribs[:realname]
48
51
  attribs[:value] = attribs[:value] || attribs[:real_name]
49
52
  attribs[:value] = attribs[:value] || attribs[:fullname]
50
53
  attribs[:value] = attribs[:value] || attribs[:full_name]
51
- if attribs[:last_name]
54
+ if attribs[:last_name] or attribs[:first_name]
52
55
  attribs[:value] = attribs[:value] || "#{attribs[:first_name]} #{attribs[:last_name]}"
53
56
  end
54
57
  attribs[:value] = attribs[:value] || attribs[:record_name]
@@ -63,12 +66,14 @@ module OpenDirectoryUtils
63
66
  dscl( user_attrs, dir_info )
64
67
  end
65
68
 
66
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME FirstName "$VALUE"
69
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME FirstName "$VALUE"
67
70
  def user_set_first_name(attribs, dir_info)
68
71
  attribs = user_record_name_alternatives(attribs)
69
72
 
70
73
  attribs[:value] = attribs[:value] || attribs[:given_name]
74
+ attribs[:value] = attribs[:value] || attribs[:givenname]
71
75
  attribs[:value] = attribs[:value] || attribs[:first_name]
76
+ attribs[:value] = attribs[:value] || attribs[:firstname]
72
77
 
73
78
  check_critical_attribute( attribs, :record_name )
74
79
  check_critical_attribute( attribs, :value, :first_name )
@@ -80,12 +85,13 @@ module OpenDirectoryUtils
80
85
  dscl( user_attrs, dir_info )
81
86
  end
82
87
 
83
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME LastName "$VALUE"
88
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME LastName "$VALUE"
84
89
  def user_set_last_name(attribs, dir_info)
85
90
  attribs = user_record_name_alternatives(attribs)
86
91
 
87
92
  attribs[:value] = attribs[:value] || attribs[:sn]
88
93
  attribs[:value] = attribs[:value] || attribs[:surname]
94
+ attribs[:value] = attribs[:value] || attribs[:lastname]
89
95
  attribs[:value] = attribs[:value] || attribs[:last_name]
90
96
 
91
97
  check_critical_attribute( attribs, :record_name )
@@ -98,10 +104,10 @@ module OpenDirectoryUtils
98
104
  dscl( user_attrs, dir_info )
99
105
  end
100
106
 
101
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME NameSuffix "$VALUE"
107
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME NameSuffix "$VALUE"
102
108
  def user_set_name_suffix
103
109
  end
104
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME apple-namesuffix "$VALUE"
110
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-namesuffix "$VALUE"
105
111
  def user_set_apple_name_suffix
106
112
  end
107
113
 
@@ -125,27 +131,7 @@ module OpenDirectoryUtils
125
131
  dscl( user_attrs, dir_info )
126
132
  end
127
133
 
128
- # sudo dscl . -create /Users/someuser PrimaryGroupID 80
129
- def user_set_primary_group_id(attribs, dir_info)
130
- attribs = user_record_name_alternatives(attribs)
131
-
132
- attribs[:value] = attribs[:value] || attribs[:group_id]
133
- attribs[:value] = attribs[:value] || attribs[:gidnumber]
134
- attribs[:value] = attribs[:value] || attribs[:groupnumber]
135
- attribs[:value] = attribs[:value] || attribs[:group_number]
136
- attribs[:value] = attribs[:value] || attribs[:primary_group_id]
137
-
138
- check_critical_attribute( attribs, :record_name )
139
- check_critical_attribute( attribs, :value, :group_id )
140
- attribs = tidy_attribs(attribs)
141
-
142
- command = {action: 'create', scope: 'Users', attribute: 'PrimaryGroupID'}
143
- user_attrs = attribs.merge(command)
144
-
145
- dscl( user_attrs, dir_info )
146
- end
147
-
148
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/someuser NFSHomeDirectory /Users/someuser
134
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/someuser NFSHomeDirectory /Users/someuser
149
135
  def user_set_nfs_home_directory(attribs, dir_info)
150
136
  attribs = user_record_name_alternatives(attribs)
151
137
 
@@ -163,41 +149,6 @@ module OpenDirectoryUtils
163
149
  dscl( user_attrs, dir_info )
164
150
  end
165
151
 
166
- # /usr/bin/pwpolicy -a diradmin -p "TopSecret" -u username -setpassword "AnotherSecret"
167
- # /usr/bin/dscl -plist -u diradmin -P #{adminpw} /LDAPv3/127.0.0.1/ -passwd /Users/#{shortname} "#{passwd}"
168
- def user_set_password(attribs, dir_info)
169
- attribs = user_record_name_alternatives(attribs)
170
-
171
- attribs[:value] = attribs[:value] || attribs[:password]
172
- attribs[:value] = attribs[:value] || attribs[:passwd]
173
- attribs[:value] = attribs[:value] || '*'
174
-
175
- check_critical_attribute( attribs, :record_name )
176
- check_critical_attribute( attribs, :value, :password )
177
- attribs = tidy_attribs(attribs)
178
-
179
- command = {action: 'passwd', scope: 'Users'}
180
- user_attrs = attribs.merge(command)
181
-
182
- dscl( user_attrs, dir_info )
183
- end
184
- # /usr/bin/dscl /LDAPv3/127.0.0.1 -auth #{shortname} "#{passwd}"
185
- def user_verify_password(attribs, dir_info)
186
- attribs = user_record_name_alternatives(attribs)
187
-
188
- attribs[:value] = attribs[:value] || attribs[:password]
189
- attribs[:value] = attribs[:value] || attribs[:passwd]
190
-
191
- check_critical_attribute( attribs, :record_name )
192
- check_critical_attribute( attribs, :value, :password )
193
- attribs = tidy_attribs(attribs)
194
-
195
- command = {action: 'auth', scope: 'Users'}
196
- user_attrs = attribs.merge(command)
197
-
198
- dscl( user_attrs, dir_info )
199
- end
200
-
201
152
  # sudo dscl . -create /Users/someuser UserShell /bin/bash
202
153
  def user_set_shell(attribs, dir_info)
203
154
  attribs = user_record_name_alternatives(attribs)
@@ -216,9 +167,9 @@ module OpenDirectoryUtils
216
167
  dscl( user_attrs, dir_info )
217
168
  end
218
169
 
219
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME mail "$VALUE"
220
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME email "$VALUE"
221
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME apple-user-mailattribute "$VALUE"
170
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME mail "$VALUE"
171
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME email "$VALUE"
172
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-user-mailattribute "$VALUE"
222
173
  def user_set_first_email(attribs, dir_info)
223
174
  attribs = user_record_name_alternatives(attribs)
224
175
 
@@ -274,19 +225,120 @@ module OpenDirectoryUtils
274
225
  return answer
275
226
  end
276
227
 
277
- # dscl . -delete /Users/yourUserName
278
- # https://tutorialforlinux.com/2011/09/15/delete-users-and-groups-from-terminal/
279
- def user_delete(attribs, dir_info)
228
+ # sudo dscl . -create /Users/someuser PrimaryGroupID 80
229
+ def user_set_primary_group_id(attribs, dir_info)
280
230
  attribs = user_record_name_alternatives(attribs)
281
231
 
232
+ attribs[:value] = attribs[:value] || attribs[:groupid]
233
+ attribs[:value] = attribs[:value] || attribs[:group_id]
234
+ attribs[:value] = attribs[:value] || attribs[:gidnumber]
235
+ attribs[:value] = attribs[:value] || attribs[:groupnumber]
236
+ attribs[:value] = attribs[:value] || attribs[:group_number]
237
+ attribs[:value] = attribs[:value] || attribs[:primarygroupid]
238
+ attribs[:value] = attribs[:value] || attribs[:primary_group_id]
239
+
282
240
  check_critical_attribute( attribs, :record_name )
241
+ check_critical_attribute( attribs, :value, :group_id )
283
242
  attribs = tidy_attribs(attribs)
284
243
 
285
- command = {action: 'delete', scope: 'Users', value: nil, attribute: nil}
244
+ command = {action: 'create', scope: 'Users', attribute: 'PrimaryGroupID'}
245
+ user_attrs = attribs.merge(command)
246
+
247
+ dscl( user_attrs, dir_info )
248
+ end
249
+
250
+ # /usr/bin/pwpolicy -a diradmin -p "TopSecret" -u username -setpassword "AnotherSecret"
251
+ # /usr/bin/dscl -plist -u diradmin -P #{adminpw} /LDAPv3/127.0.0.1 -passwd /Users/#{shortname} "#{passwd}"
252
+ def user_set_password(attribs, dir_info)
253
+ attribs = user_record_name_alternatives(attribs)
254
+
255
+ attribs[:value] = attribs[:value] || attribs[:password]
256
+ attribs[:value] = attribs[:value] || attribs[:passwd]
257
+ attribs[:value] = attribs[:value] || '*'
258
+
259
+ check_critical_attribute( attribs, :record_name )
260
+ check_critical_attribute( attribs, :value, :password )
261
+ attribs = tidy_attribs(attribs)
262
+
263
+ command = {action: 'passwd', scope: 'Users'}
264
+ user_attrs = attribs.merge(command)
265
+
266
+ dscl( user_attrs, dir_info )
267
+ end
268
+ # /usr/bin/dscl /LDAPv3/127.0.0.1 -auth #{shortname} "#{passwd}"
269
+ def user_password_verified?(attribs, dir_info)
270
+ attribs = user_record_name_alternatives(attribs)
271
+
272
+ attribs[:value] = attribs[:value] || attribs[:password]
273
+ attribs[:value] = attribs[:value] || attribs[:passwd]
274
+
275
+ check_critical_attribute( attribs, :record_name )
276
+ check_critical_attribute( attribs, :value, :password )
277
+ attribs = tidy_attribs(attribs)
278
+
279
+ command = {action: 'auth', scope: 'Users'}
286
280
  user_attrs = attribs.merge(command)
287
281
 
288
282
  dscl( user_attrs, dir_info )
289
283
  end
284
+ alias_method :user_password_ok?, :user_password_verified?
285
+
286
+ # /usr/bin/pwpolicy -a diradmin -p A-B1g-S3cret -u $shortname_USERNAME -setpolicy "isDisabled=0"
287
+ def user_enable_login(attribs, dir_info)
288
+ attribs = user_record_name_alternatives(attribs)
289
+
290
+ check_critical_attribute( attribs, :record_name )
291
+ attribs = tidy_attribs(attribs)
292
+
293
+ command = {attribute: 'enableuser', value: nil}
294
+ params = command.merge(attribs)
295
+ pwpolicy(params, dir_info)
296
+ end
297
+ # /usr/bin/pwpolicy -a diradmin -p A-B1g-S3cret -u $shortname_USERNAME -setpolicy "isDisabled=1"
298
+ def user_disable_login(attribs, dir_info)
299
+ attribs = user_record_name_alternatives(attribs)
300
+
301
+ check_critical_attribute( attribs, :record_name )
302
+ attribs = tidy_attribs(attribs)
303
+
304
+ command = {attribute: 'disableuser', value: nil}
305
+ params = command.merge(attribs)
306
+ pwpolicy(params, dir_info)
307
+ end
308
+
309
+ def user_add_to_group(attribs, dir_info)
310
+ attribs = user_record_name_alternatives(attribs)
311
+
312
+ attribs[:value] = attribs[:group_membership]
313
+ attribs[:value] = attribs[:value] || attribs[:groupmembership]
314
+ attribs[:value] = attribs[:value] || attribs[:group_name]
315
+ attribs[:value] = attribs[:value] || attribs[:groupname]
316
+ attribs[:value] = attribs[:value] || attribs[:gid]
317
+
318
+ check_critical_attribute( attribs, :record_name, :username )
319
+ check_critical_attribute( attribs, :value, :groupname )
320
+ attribs = tidy_attribs(attribs)
321
+ command = { operation: 'edit', action: 'add', type: 'user'}
322
+ user_attrs = attribs.merge(command)
323
+
324
+ dseditgroup( user_attrs, dir_info )
325
+ end
326
+ # module_function :user_add_to_group
327
+ # alias_method :user_set_group_memebership, :user_add_to_group
328
+
329
+
330
+ # /usr/bin/pwpolicy -a diradmin -p A-B1g-S3cret -u $shortname_USERNAME -getpolicy
331
+ def user_get_policy(attribs, dir_info)
332
+ attribs = user_record_name_alternatives(attribs)
333
+
334
+ check_critical_attribute( attribs, :record_name )
335
+ attribs = tidy_attribs(attribs)
336
+
337
+ command = {attribute: 'getpolicy', value: nil}
338
+ params = command.merge(attribs)
339
+ pwpolicy(params, dir_info)
340
+ end
341
+ alias_method :user_login_enabled?, :user_get_policy
290
342
 
291
343
  # https://images.apple.com/server/docs/Command_Line.pdf
292
344
  # https://serverfault.com/questions/20702/how-do-i-create-user-accounts-from-the-terminal-in-mac-os-x-10-5?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
@@ -308,6 +360,11 @@ module OpenDirectoryUtils
308
360
  attribs[:value] = nil
309
361
  answer << user_set_password(attribs, dir_info)
310
362
  attribs[:value] = nil
363
+ answer << user_enable_login(attribs, dir_info) if
364
+ attribs[:enable]&.eql? 'true' or attribs[:enable]&.eql? true
365
+ answer << user_disable_login(attribs, dir_info) unless
366
+ attribs[:enable]&.eql? 'true' or attribs[:enable]&.eql? true
367
+ attribs[:value] = nil
311
368
  answer << user_set_real_name(attribs, dir_info)
312
369
 
313
370
  return answer
@@ -320,51 +377,82 @@ module OpenDirectoryUtils
320
377
  attribs = user_record_name_alternatives(attribs)
321
378
 
322
379
  check_critical_attribute( attribs, :record_name )
323
- attribs = tidy_attribs(attribs).dup
324
-
325
- answer = []
326
- attribs[:value] = nil
327
- answer << user_create_min(attribs, dir_info)
328
- attribs[:value] = nil
329
- answer << user_set_shell(attribs, dir_info)
330
- attribs[:value] = nil
331
- answer << user_set_first_name(attribs, dir_info)
332
- attribs[:value] = nil
333
- answer << user_set_last_name(attribs, dir_info)
334
- attribs[:value] = nil
335
- answer << user_set_unique_id(attribs, dir_info)
336
- attribs[:value] = nil
337
- answer << user_set_primary_group_id(attribs, dir_info)
338
- attribs[:value] = nil
339
- answer << user_set_nfs_home_directory(attribs, dir_info)
380
+ # attribs = tidy_attribs(attribs).dup
381
+ attribs = tidy_attribs(attribs)
382
+
383
+ answer = []
384
+ attribs[:value] = nil
385
+ answer << user_create_min(attribs, dir_info)
386
+ attribs[:value] = nil
387
+ answer << user_set_shell(attribs, dir_info)
388
+ if attribs[:first_name] or attribs[:firstname] or attribs[:given_name] or
389
+ attribs[:givenname]
390
+ attribs[:value] = nil
391
+ answer << user_set_first_name(attribs, dir_info)
392
+ end
393
+ if attribs[:last_name] or attribs[:lastname] or attribs[:sn] or
394
+ attribs[:surname]
395
+ attribs[:value] = nil
396
+ answer << user_set_last_name(attribs, dir_info)
397
+ end
398
+ attribs[:value] = nil
399
+ answer << user_set_unique_id(attribs, dir_info)
400
+ attribs[:value] = nil
401
+ answer << user_set_primary_group_id(attribs, dir_info)
402
+ attribs[:value] = nil
403
+ answer << user_set_nfs_home_directory(attribs, dir_info)
340
404
  # skip email if non-sent
341
- unless attribs[:email].nil? and attribs[:mail].nil? and attribs[:apple_user_mailattribute].nil?
405
+ if attribs[:email] or attribs[:mail] or attribs[:apple_user_mailattribute]
342
406
  attribs[:value] = nil
343
407
  answer << user_set_email(attribs, dir_info)
344
408
  end
409
+ # TODO add to groups without error - if group present
410
+ # "<main> attribute status: eDSSchemaError\n" +
411
+ # "<dscl_cmd> DS Error: -14142 (eDSSchemaError)"]
412
+ # # enroll in a group membership if info present
413
+ if attribs[:group_name] or attribs[:groupname] or attribs[:gid] or
414
+ attribs[:group_membership] or attribs[:groupmembership]
415
+ attribs[:value] = nil
416
+ answer << user_add_to_group(attribs, dir_info)
417
+ end
345
418
 
346
419
  return answer.flatten
347
420
  end
421
+ alias_method :user_create, :user_create_full
422
+
423
+ # dscl . -delete /Users/yourUserName
424
+ # https://tutorialforlinux.com/2011/09/15/delete-users-and-groups-from-terminal/
425
+ def user_delete(attribs, dir_info)
426
+ attribs = user_record_name_alternatives(attribs)
427
+
428
+ check_critical_attribute( attribs, :record_name )
429
+ attribs = tidy_attribs(attribs)
430
+
431
+ command = {action: 'delete', scope: 'Users', value: nil, attribute: nil}
432
+ user_attrs = attribs.merge(command)
433
+
434
+ dscl( user_attrs, dir_info )
435
+ end
348
436
 
349
- # 1st keyword -- /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME apple-keyword "$VALUE"
350
- # other keywords -- /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -append /Users/$shortname_USERNAME apple-keyword "$VALUE"
437
+ # 1st keyword -- /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-keyword "$VALUE"
438
+ # other keywords -- /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$shortname_USERNAME apple-keyword "$VALUE"
351
439
  def user_set_first_keyword
352
440
  end
353
441
 
354
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -append /Users/$shortname_USERNAME apple-keyword "$VALUE"
442
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$shortname_USERNAME apple-keyword "$VALUE"
355
443
  def user_append_keyword
356
444
  end
357
445
 
358
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME apple-company "$VALUE"
446
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-company "$VALUE"
359
447
  def user_set_company
360
448
  end
361
449
  alias_method :las_program_info, :user_set_company
362
450
 
363
- # first - /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$USER apple-imhandle "$VALUE"
364
- # others - /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -append /Users/$USER apple-imhandle "$VALUE"
365
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$USER apple-imhandle "AIM:created: $CREATE"
366
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -append /Users/$USER apple-imhandle "ICQ:start: $START"
367
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -append /Users/$USER apple-imhandle "MSN:end: $END"
451
+ # first - /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER apple-imhandle "$VALUE"
452
+ # others - /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$USER apple-imhandle "$VALUE"
453
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER apple-imhandle "AIM:created: $CREATE"
454
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$USER apple-imhandle "ICQ:start: $START"
455
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$USER apple-imhandle "MSN:end: $END"
368
456
  def user_set_chat
369
457
  end
370
458
  alias_method :user_set_chat_channels, :user_set_chat
@@ -372,19 +460,19 @@ module OpenDirectoryUtils
372
460
  alias_method :las_start_date, :user_set_chat
373
461
  alias_method :las_end_date, :user_set_chat
374
462
 
375
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME apple-webloguri "$VALUE"
463
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-webloguri "$VALUE"
376
464
  def user_set_blog
377
465
  end
378
466
  alias_method :user_set_weblog, :user_set_blog
379
467
  alias_method :las_sync_date, :user_set_blog
380
468
 
381
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME apple-organizationinfo "$VALUE"
469
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-organizationinfo "$VALUE"
382
470
  def user_set_org_info
383
471
  end
384
472
  alias_method :las_set_organizational_info, :user_set_org_info
385
473
  alias_method :las_link_student_to_parent, :user_set_org_info
386
474
 
387
- # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME apple-relationships "$VALUE"
475
+ # /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-relationships "$VALUE"
388
476
  def user_set_relationships
389
477
  end
390
478
  alias_method :las_link_parent_to_student, :user_set_relationships