From a5d030e71002de437a7815039ae10cd034a5933e Mon Sep 17 00:00:00 2001 From: AVMG20 Date: Wed, 28 Jul 2021 10:05:01 +0200 Subject: [PATCH] improved the make user command to give better feedback --- app/Classes/Pterodactyl.php | 6 ++-- app/Console/Commands/MakeUserCommand.php | 29 ++++++++++++++----- app/Http/Controllers/Admin/UserController.php | 3 +- 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/app/Classes/Pterodactyl.php b/app/Classes/Pterodactyl.php index a48b569f..22bce864 100644 --- a/app/Classes/Pterodactyl.php +++ b/app/Classes/Pterodactyl.php @@ -11,6 +11,7 @@ use Exception; use Illuminate\Http\Client\PendingRequest; use Illuminate\Http\Client\Response; use Illuminate\Support\Facades\Http; +use Illuminate\Validation\Validator; class Pterodactyl { @@ -34,9 +35,8 @@ class Pterodactyl */ public function getUser(int $pterodactylId){ $response = self::client()->get("/application/users/{$pterodactylId}"); - if ($response->failed()) { - return []; - } + + if ($response->failed()) return $response->json(); return $response->json()['attributes']; } diff --git a/app/Console/Commands/MakeUserCommand.php b/app/Console/Commands/MakeUserCommand.php index ef3b1372..4d4a7ed5 100644 --- a/app/Console/Commands/MakeUserCommand.php +++ b/app/Console/Commands/MakeUserCommand.php @@ -6,6 +6,8 @@ use App\Classes\Pterodactyl; use App\Models\User; use Illuminate\Console\Command; use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Validator; +use Illuminate\Validation\ValidationException; class MakeUserCommand extends Command { @@ -46,24 +48,35 @@ class MakeUserCommand extends Command $ptero_id = $this->option('ptero_id') ?? $this->ask('Please specify your Pterodactyl ID.'); $password = $this->option('password') ?? $this->ask('Please specify your password.'); - if (strlen($password) < 8) { - $this->alert('Your password need to be at least 8 characters long'); + // Validate user input + $validator = Validator::make([ + 'ptero_id' => $ptero_id, + 'password' => $password, + ], [ + 'ptero_id' => 'required|numeric|integer|min:1|max:2147483647', + 'password' => 'required|string|min:8|max:60', + ]); + + if ($validator->fails()) { + $this->error($validator->errors()->first()); return 0; } //TODO: Do something with response (check for status code and give hints based upon that) $response = $this->pterodactyl->getUser($ptero_id); - if ($response === []) { - $this->alert('It seems that your Pterodactyl ID is not correct. Rerun the command and input an correct ID'); + if (isset($response['errors'])) { + if (isset($response['errors'][0]['code'])) $this->error("code: {$response['errors'][0]['code']}"); + if (isset($response['errors'][0]['status'])) $this->error("status: {$response['errors'][0]['status']}"); + if (isset($response['errors'][0]['detail'])) $this->error("detail: {$response['errors'][0]['detail']}"); return 0; } $user = User::create([ - 'name' => $response['first_name'], - 'email' => $response['email'], - 'role' => 'admin', - 'password' => Hash::make($password), + 'name' => $response['first_name'], + 'email' => $response['email'], + 'role' => 'admin', + 'password' => Hash::make($password), 'pterodactyl_id' => $response['id'] ]); diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 496c1bf3..132dc154 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -83,13 +83,12 @@ class UserController extends Controller "role" => Rule::in(['admin', 'mod', 'client', 'member']), ]); - if (empty($this->pterodactyl->getUser($request->input('pterodactyl_id')))) { + if (isset($this->pterodactyl->getUser($request->input('pterodactyl_id'))['errors'])) { throw ValidationException::withMessages([ 'pterodactyl_id' => ["User does not exists on pterodactyl's panel"] ]); } - if (!is_null($request->input('new_password'))) { $request->validate([ 'new_password' => 'required|string|min:8',