Path: blob/1.0-develop/app/Http/Controllers/Admin/Servers/CreateServerController.php
10284 views
<?php12namespace Pterodactyl\Http\Controllers\Admin\Servers;34use Illuminate\View\View;5use Pterodactyl\Models\Nest;6use Pterodactyl\Models\Node;7use Pterodactyl\Models\Location;8use Illuminate\Http\RedirectResponse;9use Prologue\Alerts\AlertsMessageBag;10use Pterodactyl\Http\Controllers\Controller;11use Pterodactyl\Repositories\Eloquent\NestRepository;12use Pterodactyl\Repositories\Eloquent\NodeRepository;13use Pterodactyl\Http\Requests\Admin\ServerFormRequest;14use Pterodactyl\Services\Servers\ServerCreationService;1516class CreateServerController extends Controller17{18/**19* CreateServerController constructor.20*/21public function __construct(22private AlertsMessageBag $alert,23private NestRepository $nestRepository,24private NodeRepository $nodeRepository,25private ServerCreationService $creationService,26) {27}2829/**30* Displays the create server page.31*32* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException33*/34public function index(): View|RedirectResponse35{36$nodes = Node::all();37if (count($nodes) < 1) {38$this->alert->warning(trans('admin/server.alerts.node_required'))->flash();3940return redirect()->route('admin.nodes');41}4243$nests = $this->nestRepository->getWithEggs();4445\JavaScript::put([46'nodeData' => $this->nodeRepository->getNodesForServerCreation(),47'nests' => $nests->map(function (Nest $item) {48return array_merge($item->toArray(), [49'eggs' => $item->eggs->keyBy('id')->toArray(),50]);51})->keyBy('id'),52]);5354return view('admin.servers.new', [55'locations' => Location::all(),56'nests' => $nests,57]);58}5960/**61* Create a new server on the remote system.62*63* @throws \Illuminate\Validation\ValidationException64* @throws \Pterodactyl\Exceptions\DisplayException65* @throws \Pterodactyl\Exceptions\Service\Deployment\NoViableAllocationException66* @throws \Pterodactyl\Exceptions\Service\Deployment\NoViableNodeException67* @throws \Throwable68*/69public function store(ServerFormRequest $request): RedirectResponse70{71$data = $request->except(['_token']);72if (!empty($data['custom_image'])) {73$data['image'] = $data['custom_image'];74unset($data['custom_image']);75}7677$server = $this->creationService->handle($data);7879$this->alert->success(trans('admin/server.alerts.server_created'))->flash();8081return new RedirectResponse('/admin/servers/view/' . $server->id);82}83}848586