1919use CodeIgniter \Shield \Config \Auth ;
2020use CodeIgniter \Shield \Entities \User as UserEntity ;
2121use CodeIgniter \Shield \Exceptions \UserNotFoundException ;
22+ use CodeIgniter \Shield \Models \GroupModel ;
2223use CodeIgniter \Shield \Models \UserModel ;
2324use CodeIgniter \Shield \Validation \ValidationRules ;
2425use Config \Services ;
@@ -53,6 +54,7 @@ class User extends BaseCommand
5354 shield:user <action> options
5455
5556 shield:user create -n newusername -e newuser@example.com
57+ shield:user create -n newusername -e newuser@example.com -g mygroup
5658
5759 shield:user activate -n username
5860 shield:user activate -e user@example.com
@@ -159,7 +161,7 @@ public function run(array $params): int
159161 try {
160162 switch ($ action ) {
161163 case 'create ' :
162- $ this ->create ($ username , $ email );
164+ $ this ->create ($ username , $ email, $ group );
163165 break ;
164166
165167 case 'activate ' :
@@ -252,8 +254,9 @@ private function setValidationRules(): void
252254 *
253255 * @param string|null $username User name to create (optional)
254256 * @param string|null $email User email to create (optional)
257+ * @param string|null $group Group to add user to (optional)
255258 */
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
257260 {
258261 $ data = [];
259262
@@ -303,6 +306,11 @@ private function create(?string $username = null, ?string $email = null): void
303306
304307 $ user = new UserEntity ($ data );
305308
309+ // Validate the group
310+ if ($ group !== null && ! $ this ->validateGroup ($ group )) {
311+ throw new CancelException ('Invalid group: " ' . $ group . '" ' );
312+ }
313+
306314 if ($ username === null ) {
307315 $ userModel ->allowEmptyInserts ()->save ($ user );
308316 $ this ->write ('New User created ' , 'green ' );
@@ -311,11 +319,26 @@ private function create(?string $username = null, ?string $email = null): void
311319 $ this ->write ('User " ' . $ username . '" created ' , 'green ' );
312320 }
313321
314- // Add to default group
315322 $ user = $ userModel ->findById ($ userModel ->getInsertID ());
316- $ userModel ->addToDefaultGroup ($ user );
317323
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 );
319342 }
320343
321344 /**
0 commit comments