exists('users.json')) { $this->error('[ERROR] ' . storage_path('app') . '/' . $this->importFileName . ' is missing'); return false; } //check if json file is valid $json = json_decode(Storage::disk('local')->get('users.json')); if (!array_key_exists(2, $json)) { $this->error('[ERROR] Invalid json file'); return false; } if (!$json[2]->data) { $this->error('[ERROR] Invalid json file / No users found!'); return false; } //ask questions :) $initial_credits = $this->option('initial_credits') ?? $this->ask('Please specify the amount of starting credits users should get. '); $initial_server_limit = $this->option('initial_server_limit') ?? $this->ask('Please specify the initial server limit users should get.'); $confirm = strtolower($this->option('confirm') ?? $this->ask('[y/n] Are you sure you want to remove all existing users from the database continue importing?')); //cancel if ($confirm !== 'y') { $this->error('[ERROR] Stopped import script!'); return false; } //import users $this->deleteCurrentUserBase(); $this->importUsingJsonFile($json, $initial_credits, $initial_server_limit); return true; } /** * @return void */ private function deleteCurrentUserBase() { $currentUserCount = User::count(); if ($currentUserCount == 0) return; $this->line("Deleting ({$currentUserCount}) users.."); foreach (User::all() as $user) { $user->delete(); } } /** * @param $json * @param $initial_credits * @param $initial_server_limit * @return void */ private function importUsingJsonFile($json, $initial_credits, $initial_server_limit) { $this->withProgressBar($json[2]->data, function ($user) use ($initial_server_limit, $initial_credits) { $role = $user->root_admin == '0' ? 'member' : 'admin'; User::create([ "pterodactyl_id" => $user->id, "name" => $user->name_first, "email" => $user->email, "password" => $user->password, "role" => $role, "credits" => $initial_credits, "server_limit" => $initial_server_limit, "created_at" => $user->created_at, "updated_at" => $user->updated_at, ]); }); $this->newLine(); $this->line("Done importing, you can now login using your pterodactyl credentials."); $this->newLine(); } }