diff --git a/src/Controllers/ServerController.php b/src/Controllers/ServerController.php index f8690d2..4be2504 100755 --- a/src/Controllers/ServerController.php +++ b/src/Controllers/ServerController.php @@ -1560,12 +1560,18 @@ class ServerController } $homeFlag = $createHome ? '-m' : '-M'; - $cmd = "sudo useradd {$homeFlag} -p \$(sudo openssl passwd -6 '{$password}')"; + $groupsFlag = ''; if (!empty($groups)) { $sanitized = preg_replace('/[^a-z0-9_,-]/', '', $groups); - $cmd .= " -G {$sanitized}"; + $groupsFlag = " -G {$sanitized}"; + } + $cmd = "sudo useradd {$homeFlag}{$groupsFlag} {$username} 2>&1; echo EXIT:\$?"; + $result = $ssh->exec($cmd); + $exitCode = (int) trim(explode('EXIT:', $result['output'] ?? 'EXIT:-1')[1] ?? '-1'); + if ($exitCode === 0) { + $b64 = base64_encode("{$username}:{$password}"); + $ssh->exec("echo {$b64} | base64 -d | sudo chpasswd 2>&1"); } - $cmd .= " {$username} 2>&1; echo EXIT:\$?"; $result = $ssh->exec($cmd); $exitCode = (int) trim(explode('EXIT:', $result['output'] ?? 'EXIT:-1')[1] ?? '-1');