Skip to content

Commit 3add44d

Browse files
committed
Fix database management for servers
1 parent 63e39fb commit 3add44d

File tree

3 files changed

+62
-74
lines changed

3 files changed

+62
-74
lines changed

app/Http/Controllers/Admin/ServersController.php

Lines changed: 60 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ public function store(ServerFormRequest $request)
186186
/**
187187
* Returns a tree of all avaliable nodes in a given location.
188188
*
189-
* @param \Illuminate\Http\Request $request
189+
* @param \Illuminate\Http\Request $request
190190
* @return \Illuminate\Support\Collection
191191
*/
192192
public function nodes(Request $request)
@@ -197,8 +197,8 @@ public function nodes(Request $request)
197197
/**
198198
* Display the index when viewing a specific server.
199199
*
200-
* @param \Illuminate\Http\Request $request
201-
* @param int $id
200+
* @param \Illuminate\Http\Request $request
201+
* @param int $id
202202
* @return \Illuminate\View\View
203203
*/
204204
public function viewIndex(Request $request, $id)
@@ -209,8 +209,8 @@ public function viewIndex(Request $request, $id)
209209
/**
210210
* Display the details page when viewing a specific server.
211211
*
212-
* @param \Illuminate\Http\Request $request
213-
* @param int $id
212+
* @param \Illuminate\Http\Request $request
213+
* @param int $id
214214
* @return \Illuminate\View\View
215215
*/
216216
public function viewDetails(Request $request, $id)
@@ -226,8 +226,8 @@ public function viewDetails(Request $request, $id)
226226
/**
227227
* Display the build details page when viewing a specific server.
228228
*
229-
* @param \Illuminate\Http\Request $request
230-
* @param int $id
229+
* @param \Illuminate\Http\Request $request
230+
* @param int $id
231231
* @return \Illuminate\View\View
232232
*/
233233
public function viewBuild(Request $request, $id)
@@ -249,8 +249,8 @@ public function viewBuild(Request $request, $id)
249249
/**
250250
* Display startup configuration page for a server.
251251
*
252-
* @param \Illuminate\Http\Request $request
253-
* @param int $id
252+
* @param \Illuminate\Http\Request $request
253+
* @param int $id
254254
* @return \Illuminate\View\View
255255
*/
256256
public function viewStartup(Request $request, $id)
@@ -297,8 +297,8 @@ public function viewDatabase(Request $request, $id)
297297
/**
298298
* Display the management page when viewing a specific server.
299299
*
300-
* @param \Illuminate\Http\Request $request
301-
* @param int $id
300+
* @param \Illuminate\Http\Request $request
301+
* @param int $id
302302
* @return \Illuminate\View\View
303303
*/
304304
public function viewManage(Request $request, $id)
@@ -309,8 +309,8 @@ public function viewManage(Request $request, $id)
309309
/**
310310
* Display the deletion page for a server.
311311
*
312-
* @param \Illuminate\Http\Request $request
313-
* @param int $id
312+
* @param \Illuminate\Http\Request $request
313+
* @param int $id
314314
* @return \Illuminate\View\View
315315
*/
316316
public function viewDelete(Request $request, $id)
@@ -321,8 +321,8 @@ public function viewDelete(Request $request, $id)
321321
/**
322322
* Update the details for a server.
323323
*
324-
* @param \Illuminate\Http\Request $request
325-
* @param int $id
324+
* @param \Illuminate\Http\Request $request
325+
* @param int $id
326326
* @return \Illuminate\Http\RedirectResponse
327327
*/
328328
public function setDetails(ServerFormRequest $request, Models\Server $server)
@@ -353,8 +353,8 @@ public function setDetails(ServerFormRequest $request, Models\Server $server)
353353
/**
354354
* Set the new docker container for a server.
355355
*
356-
* @param \Illuminate\Http\Request $request
357-
* @param int $id
356+
* @param \Illuminate\Http\Request $request
357+
* @param int $id
358358
* @return \Illuminate\Http\RedirectResponse
359359
*/
360360
public function setContainer(Request $request, $id)
@@ -381,8 +381,8 @@ public function setContainer(Request $request, $id)
381381
/**
382382
* Toggles the install status for a server.
383383
*
384-
* @param \Illuminate\Http\Request $request
385-
* @param int $id
384+
* @param \Illuminate\Http\Request $request
385+
* @param int $id
386386
* @return \Illuminate\Http\RedirectResponse
387387
*/
388388
public function toggleInstall(Request $request, $id)
@@ -405,8 +405,8 @@ public function toggleInstall(Request $request, $id)
405405
/**
406406
* Reinstalls the server with the currently assigned pack and service.
407407
*
408-
* @param \Illuminate\Http\Request $request
409-
* @param int $id
408+
* @param \Illuminate\Http\Request $request
409+
* @param int $id
410410
* @return \Illuminate\Http\RedirectResponse
411411
*/
412412
public function reinstallServer(Request $request, $id)
@@ -429,8 +429,8 @@ public function reinstallServer(Request $request, $id)
429429
/**
430430
* Setup a server to have a container rebuild.
431431
*
432-
* @param \Illuminate\Http\Request $request
433-
* @param int $id
432+
* @param \Illuminate\Http\Request $request
433+
* @param int $id
434434
* @return \Illuminate\Http\RedirectResponse
435435
*/
436436
public function rebuildContainer(Request $request, $id)
@@ -455,8 +455,8 @@ public function rebuildContainer(Request $request, $id)
455455
/**
456456
* Manage the suspension status for a server.
457457
*
458-
* @param \Illuminate\Http\Request $request
459-
* @param int $id
458+
* @param \Illuminate\Http\Request $request
459+
* @param int $id
460460
* @return \Illuminate\Http\RedirectResponse
461461
*/
462462
public function manageSuspension(Request $request, $id)
@@ -488,8 +488,8 @@ public function manageSuspension(Request $request, $id)
488488
/**
489489
* Update the build configuration for a server.
490490
*
491-
* @param \Illuminate\Http\Request $request
492-
* @param int $id
491+
* @param \Illuminate\Http\Request $request
492+
* @param int $id
493493
* @return \Illuminate\Http\RedirectResponse
494494
*/
495495
public function updateBuild(Request $request, $id)
@@ -521,8 +521,8 @@ public function updateBuild(Request $request, $id)
521521
/**
522522
* Start the server deletion process.
523523
*
524-
* @param \Illuminate\Http\Request $request
525-
* @param int $id
524+
* @param \Illuminate\Http\Request $request
525+
* @param int $id
526526
* @return \Illuminate\Http\RedirectResponse
527527
*/
528528
public function delete(Request $request, $id)
@@ -550,8 +550,8 @@ public function delete(Request $request, $id)
550550
/**
551551
* Update the startup command as well as variables.
552552
*
553-
* @param \Illuminate\Http\Request $request
554-
* @param int $id
553+
* @param \Illuminate\Http\Request $request
554+
* @param int $id
555555
* @return \Illuminate\Http\RedirectResponse
556556
*/
557557
public function saveStartup(Request $request, $id)
@@ -584,9 +584,13 @@ public function saveStartup(Request $request, $id)
584584
/**
585585
* Creates a new database assigned to a specific server.
586586
*
587-
* @param \Illuminate\Http\Request $request
588-
* @param int $id
587+
* @param \Illuminate\Http\Request $request
588+
* @param int $id
589589
* @return \Illuminate\Http\RedirectResponse
590+
*
591+
* @throws \Exception
592+
* @throws \Pterodactyl\Exceptions\DisplayException
593+
* @throws \Pterodactyl\Exceptions\Model\DataValidationException
590594
*/
591595
public function newDatabase(Request $request, $id)
592596
{
@@ -595,68 +599,52 @@ public function newDatabase(Request $request, $id)
595599
'remote' => $request->input('remote'),
596600
'database_host_id' => $request->input('database_host_id'),
597601
]);
598-
// $repo = new DatabaseRepository;
599-
//
600-
// try {
601-
// $repo->create($id, $request->only(['host', 'database', 'connection']));
602-
//
603-
// Alert::success('A new database was assigned to this server successfully.')->flash();
604-
// } catch (DisplayValidationException $ex) {
605-
// return redirect()->route('admin.servers.view.database', $id)->withInput()->withErrors(json_decode($ex->getMessage()))->withInput();
606-
// } catch (DisplayException $ex) {
607-
// Alert::danger($ex->getMessage())->flash();
608-
// } catch (\Exception $ex) {
609-
// Log::error($ex);
610-
// Alert::danger('An exception occured while attempting to add a new database for this server. This error has been logged.')->flash();
611-
// }
612602

613603
return redirect()->route('admin.servers.view.database', $id)->withInput();
614604
}
615605

616606
/**
617607
* Resets the database password for a specific database on this server.
618608
*
619-
* @param \Illuminate\Http\Request $request
620-
* @param int $id
609+
* @param \Illuminate\Http\Request $request
610+
* @param int $id
621611
* @return \Illuminate\Http\RedirectResponse
612+
*
613+
* @throws \Exception
614+
* @throws \Pterodactyl\Exceptions\Model\DataValidationException
622615
*/
623616
public function resetDatabasePassword(Request $request, $id)
624617
{
625-
$database = Models\Database::where('server_id', $id)->findOrFail($request->input('database'));
626-
$repo = new DatabaseRepository;
618+
$database = $this->databaseRepository->findFirstWhere([
619+
['server_id', '=', $id],
620+
['id', '=', $request->input('database')],
621+
]);
627622

628-
try {
629-
$repo->password($database->id, str_random(20));
623+
$this->databaseCreationService->changePassword($database->id, str_random(20));
630624

631-
return response('', 204);
632-
} catch (\Exception $ex) {
633-
Log::error($ex);
634-
635-
return response()->json(['error' => 'A unhandled exception occurred while attempting to reset this password. This error has been logged.'], 503);
636-
}
625+
return response('', 204);
637626
}
638627

639628
/**
640629
* Deletes a database from a server.
641630
*
642-
* @param \Illuminate\Http\Request $request
643-
* @param int $id
644-
* @param int $database
631+
* @param \Illuminate\Http\Request $request
632+
* @param int $id
633+
* @param int $database
645634
* @return \Illuminate\Http\RedirectResponse
635+
*
636+
* @throws \Exception
637+
* @throws \Pterodactyl\Exceptions\Model\DataValidationException
646638
*/
647639
public function deleteDatabase(Request $request, $id, $database)
648640
{
649-
$database = Models\Database::where('server_id', $id)->findOrFail($database);
650-
$repo = new DatabaseRepository;
641+
$database = $this->databaseRepository->findFirstWhere([
642+
['server_id', '=', $id],
643+
['id', '=', $database],
644+
]);
651645

652-
try {
653-
$repo->drop($database->id);
646+
$this->databaseCreationService->delete($database->id);
654647

655-
return response('', 204);
656-
} catch (\Exception $ex) {
657-
Log::error($ex);
658-
659-
return response()->json(['error' => 'A unhandled exception occurred while attempting to drop this database. This error has been logged.'], 503);
660-
}
648+
return response('', 204);
661649
}
662650
}

app/Services/Database/CreationService.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ public function changePassword($id, $password)
150150
$this->repository->assignUserToDatabase(
151151
$database->database, $database->username, $database->remote, 'dynamic'
152152
);
153-
$this->repository->flush();
153+
$this->repository->flush('dynamic');
154154

155155
$this->database->commit();
156156
} catch (\Exception $ex) {

tests/Unit/Services/Database/CreationServiceTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ public function testDatabasePasswordShouldBeChanged()
246246
self::TEST_DATA['database'], self::TEST_DATA['username'], self::TEST_DATA['remote'], 'dynamic'
247247
)->once()->andReturnNull();
248248

249-
$this->repository->shouldReceive('flush')->withNoArgs()->once()->andReturnNull();
249+
$this->repository->shouldReceive('flush')->with('dynamic')->once()->andReturnNull();
250250
$this->database->shouldReceive('commit')->withNoArgs()->once()->andReturnNull();
251251

252252
$response = $this->service->changePassword(1, 'new_password');

0 commit comments

Comments
 (0)