瀏覽代碼

improved the make user command to give better feedback

AVMG20 3 年之前
父節點
當前提交
a5d030e710
共有 3 個文件被更改,包括 25 次插入13 次删除
  1. 3 3
      app/Classes/Pterodactyl.php
  2. 21 8
      app/Console/Commands/MakeUserCommand.php
  3. 1 2
      app/Http/Controllers/Admin/UserController.php

+ 3 - 3
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'];
     }
 

+ 21 - 8
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']
         ]);
 

+ 1 - 2
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',