19
19
use CodeIgniter \Shield \Config \Auth ;
20
20
use CodeIgniter \Shield \Entities \User as UserEntity ;
21
21
use CodeIgniter \Shield \Exceptions \UserNotFoundException ;
22
+ use CodeIgniter \Shield \Models \GroupModel ;
22
23
use CodeIgniter \Shield \Models \UserModel ;
23
24
use CodeIgniter \Shield \Validation \ValidationRules ;
24
25
use Config \Services ;
@@ -53,6 +54,7 @@ class User extends BaseCommand
53
54
shield:user <action> options
54
55
55
56
shield:user create -n newusername -e [email protected]
57
+ shield:user create -n newusername -e [email protected] -g mygroup
56
58
57
59
shield:user activate -n username
58
60
shield:user activate -e [email protected]
@@ -159,7 +161,7 @@ public function run(array $params): int
159
161
try {
160
162
switch ($ action ) {
161
163
case 'create ' :
162
- $ this ->create ($ username , $ email );
164
+ $ this ->create ($ username , $ email, $ group );
163
165
break ;
164
166
165
167
case 'activate ' :
@@ -252,8 +254,9 @@ private function setValidationRules(): void
252
254
*
253
255
* @param string|null $username User name to create (optional)
254
256
* @param string|null $email User email to create (optional)
257
+ * @param string|null $group Group to add user to (optional)
255
258
*/
256
- private function create (?string $ username = null , ?string $ email = null ): void
259
+ private function create (?string $ username = null , ?string $ email = null , ? string $ group = null ): void
257
260
{
258
261
$ data = [];
259
262
@@ -303,6 +306,11 @@ private function create(?string $username = null, ?string $email = null): void
303
306
304
307
$ user = new UserEntity ($ data );
305
308
309
+ // Validate the group
310
+ if ($ group !== null && ! $ this ->validateGroup ($ group )) {
311
+ throw new CancelException ('Invalid group: " ' . $ group . '" ' );
312
+ }
313
+
306
314
if ($ username === null ) {
307
315
$ userModel ->allowEmptyInserts ()->save ($ user );
308
316
$ this ->write ('New User created ' , 'green ' );
@@ -311,11 +319,26 @@ private function create(?string $username = null, ?string $email = null): void
311
319
$ this ->write ('User " ' . $ username . '" created ' , 'green ' );
312
320
}
313
321
314
- // Add to default group
315
322
$ user = $ userModel ->findById ($ userModel ->getInsertID ());
316
- $ userModel ->addToDefaultGroup ($ user );
317
323
318
- $ this ->write ('The user is added to the default group. ' , 'green ' );
324
+ if ($ group === null ) {
325
+ // Add to default group
326
+ $ userModel ->addToDefaultGroup ($ user );
327
+
328
+ $ this ->write ('The user is added to the default group. ' , 'green ' );
329
+ } else {
330
+ $ user ->addGroup ($ group );
331
+
332
+ $ this ->write ('The user is added to group " ' . $ group . '". ' , 'green ' );
333
+ }
334
+ }
335
+
336
+ private function validateGroup (string $ group ): bool
337
+ {
338
+ /** @var GroupModel $groupModel */
339
+ $ groupModel = model (GroupModel::class);
340
+
341
+ return $ groupModel ->isValidGroup ($ group );
319
342
}
320
343
321
344
/**
0 commit comments