Skip to content

Commit 99c9682

Browse files
committed
Fix errors with mounts; closes pterodactyl#2374
1 parent b4a9a72 commit 99c9682

File tree

7 files changed

+63
-186
lines changed

7 files changed

+63
-186
lines changed

app/Http/Controllers/Admin/MountController.php

Lines changed: 25 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
namespace Pterodactyl\Http\Controllers\Admin;
44

5+
use Ramsey\Uuid\Uuid;
56
use Illuminate\Http\Request;
7+
use Pterodactyl\Models\Nest;
68
use Pterodactyl\Models\Mount;
9+
use Pterodactyl\Models\Location;
710
use Prologue\Alerts\AlertsMessageBag;
8-
use Pterodactyl\Exceptions\DisplayException;
911
use Pterodactyl\Http\Controllers\Controller;
1012
use Pterodactyl\Services\Mounts\MountUpdateService;
1113
use Pterodactyl\Http\Requests\Admin\MountFormRequest;
@@ -37,48 +39,24 @@ class MountController extends Controller
3739
*/
3840
protected $repository;
3941

40-
/**
41-
* @var \Pterodactyl\Services\Mounts\MountCreationService
42-
*/
43-
protected $creationService;
44-
45-
/**
46-
* @var \Pterodactyl\Services\Mounts\MountDeletionService
47-
*/
48-
protected $deletionService;
49-
50-
/**
51-
* @var \Pterodactyl\Services\Mounts\MountUpdateService
52-
*/
53-
protected $updateService;
54-
5542
/**
5643
* MountController constructor.
5744
*
5845
* @param \Prologue\Alerts\AlertsMessageBag $alert
5946
* @param \Pterodactyl\Contracts\Repository\NestRepositoryInterface $nestRepository
6047
* @param \Pterodactyl\Contracts\Repository\LocationRepositoryInterface $locationRepository
6148
* @param \Pterodactyl\Repositories\Eloquent\MountRepository $repository
62-
* @param \Pterodactyl\Services\Mounts\MountCreationService $creationService
63-
* @param \Pterodactyl\Services\Mounts\MountDeletionService $deletionService
64-
* @param \Pterodactyl\Services\Mounts\MountUpdateService $updateService
6549
*/
6650
public function __construct(
6751
AlertsMessageBag $alert,
6852
NestRepositoryInterface $nestRepository,
6953
LocationRepositoryInterface $locationRepository,
70-
MountRepository $repository,
71-
MountCreationService $creationService,
72-
MountDeletionService $deletionService,
73-
MountUpdateService $updateService
54+
MountRepository $repository
7455
) {
7556
$this->alert = $alert;
7657
$this->nestRepository = $nestRepository;
7758
$this->locationRepository = $locationRepository;
7859
$this->repository = $repository;
79-
$this->creationService = $creationService;
80-
$this->deletionService = $deletionService;
81-
$this->updateService = $updateService;
8260
}
8361

8462
/**
@@ -103,11 +81,8 @@ public function index()
10381
*/
10482
public function view($id)
10583
{
106-
$nests = $this->nestRepository->all();
107-
$nests->load('eggs');
108-
109-
$locations = $this->locationRepository->all();
110-
$locations->load('nodes');
84+
$nests = Nest::query()->with('eggs')->get();
85+
$locations = Location::query()->with('nodes')->get();
11186

11287
return view('admin.mounts.view', [
11388
'mount' => $this->repository->getWithRelations($id),
@@ -126,7 +101,11 @@ public function view($id)
126101
*/
127102
public function create(MountFormRequest $request)
128103
{
129-
$mount = $this->creationService->handle($request->normalize());
104+
/** @var \Pterodactyl\Models\Mount $mount */
105+
$mount = Mount::query()->create(array_merge($request->validated(), [
106+
'uuid' => Uuid::uuid4()->toString(),
107+
]));
108+
130109
$this->alert->success('Mount was created successfully.')->flash();
131110

132111
return redirect()->route('admin.mounts.view', $mount->id);
@@ -147,7 +126,8 @@ public function update(MountFormRequest $request, Mount $mount)
147126
return $this->delete($mount);
148127
}
149128

150-
$this->updateService->handle($mount->id, $request->normalize());
129+
$mount->forceFill($request->validated())->save();
130+
151131
$this->alert->success('Mount was updated successfully.')->flash();
152132

153133
return redirect()->route('admin.mounts.view', $mount->id);
@@ -163,15 +143,9 @@ public function update(MountFormRequest $request, Mount $mount)
163143
*/
164144
public function delete(Mount $mount)
165145
{
166-
try {
167-
$this->deletionService->handle($mount->id);
168-
169-
return redirect()->route('admin.mounts');
170-
} catch (DisplayException $ex) {
171-
$this->alert->danger($ex->getMessage())->flash();
172-
}
146+
$mount->delete();
173147

174-
return redirect()->route('admin.mounts.view', $mount->id);
148+
return redirect()->route('admin.mounts');
175149
}
176150

177151
/**
@@ -188,11 +162,12 @@ public function addEggs(Request $request, Mount $mount)
188162
]);
189163

190164
$eggs = $validatedData['eggs'] ?? [];
191-
if (sizeof($eggs) > 0) {
192-
$mount->eggs()->attach(array_map('intval', $eggs));
193-
$this->alert->success('Mount was updated successfully.')->flash();
165+
if (count($eggs) > 0) {
166+
$mount->eggs()->attach($eggs);
194167
}
195168

169+
$this->alert->success('Mount was updated successfully.')->flash();
170+
196171
return redirect()->route('admin.mounts.view', $mount->id);
197172
}
198173

@@ -205,16 +180,15 @@ public function addEggs(Request $request, Mount $mount)
205180
*/
206181
public function addNodes(Request $request, Mount $mount)
207182
{
208-
$validatedData = $request->validate([
209-
'nodes' => 'required|exists:nodes,id',
210-
]);
183+
$data = $request->validate(['nodes' => 'required|exists:nodes,id']);
211184

212-
$nodes = $validatedData['nodes'] ?? [];
213-
if (sizeof($nodes) > 0) {
214-
$mount->nodes()->attach(array_map('intval', $nodes));
215-
$this->alert->success('Mount was updated successfully.')->flash();
185+
$nodes = $data['nodes'] ?? [];
186+
if (count($nodes) > 0) {
187+
$mount->nodes()->attach($nodes);
216188
}
217189

190+
$this->alert->success('Mount was updated successfully.')->flash();
191+
218192
return redirect()->route('admin.mounts.view', $mount->id);
219193
}
220194

app/Http/Controllers/Admin/ServersController.php

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use Illuminate\Support\Arr;
1313
use Illuminate\Http\Request;
1414
use Pterodactyl\Models\User;
15+
use Pterodactyl\Models\Mount;
1516
use Pterodactyl\Models\Server;
1617
use Prologue\Alerts\AlertsMessageBag;
1718
use GuzzleHttp\Exception\RequestException;
@@ -412,12 +413,18 @@ public function deleteDatabase($server, $database)
412413
* Add a mount to a server.
413414
*
414415
* @param Server $server
415-
* @param int $mount_id
416+
* @param \Pterodactyl\Models\Mount $mount
416417
* @return \Illuminate\Http\RedirectResponse
418+
*
419+
* @throws \Pterodactyl\Exceptions\Http\Connection\DaemonConnectionException
420+
* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
417421
*/
418-
public function addMount(Server $server, int $mount_id)
422+
public function addMount(Server $server, Mount $mount)
419423
{
420-
$server->mounts()->attach($mount_id);
424+
$server->mounts()->updateOrCreate([
425+
'mount_id' => $mount->id,
426+
'server_id' => $server->id,
427+
]);
421428

422429
$data = $this->serverConfigurationStructureService->handle($server);
423430

@@ -438,15 +445,18 @@ public function addMount(Server $server, int $mount_id)
438445
* Remove a mount from a server.
439446
*
440447
* @param Server $server
441-
* @param int $mount_id
448+
* @param \Pterodactyl\Models\Mount $mount
442449
* @return \Illuminate\Http\RedirectResponse
443450
*
444-
* @throws DaemonConnectionException
451+
* @throws \Pterodactyl\Exceptions\Http\Connection\DaemonConnectionException
445452
* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
446453
*/
447-
public function deleteMount(Server $server, int $mount_id)
454+
public function deleteMount(Server $server, Mount $mount)
448455
{
449-
$server->mounts()->detach($mount_id);
456+
$server->mounts()
457+
->where('mount_id', $mount->id)
458+
->where('server_id', $server->id)
459+
->delete();
450460

451461
$data = $this->serverConfigurationStructureService->handle($server);
452462

app/Http/Requests/Admin/MountFormRequest.php

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
11
<?php
2-
/**
3-
* Pterodactyl - Panel
4-
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
5-
*
6-
* This software is licensed under the terms of the MIT license.
7-
* https://opensource.org/licenses/MIT
8-
*/
92

103
namespace Pterodactyl\Http\Requests\Admin;
114

app/Models/EggMount.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
namespace Pterodactyl\Models;
4+
5+
class EggMount extends Model
6+
{
7+
/**
8+
* @var string
9+
*/
10+
protected $table = 'egg_mount';
11+
12+
/**
13+
* @var null
14+
*/
15+
protected $primaryKey = null;
16+
17+
/**
18+
* @var bool
19+
*/
20+
public $incrementing = false;
21+
}

app/Services/Mounts/MountCreationService.php

Lines changed: 0 additions & 40 deletions
This file was deleted.

app/Services/Mounts/MountDeletionService.php

Lines changed: 0 additions & 40 deletions
This file was deleted.

app/Services/Mounts/MountUpdateService.php

Lines changed: 0 additions & 41 deletions
This file was deleted.

0 commit comments

Comments
 (0)