panel icon indicating copy to clipboard operation
panel copied to clipboard

Add support for admin/databases creation through application api

Open CODEHUBHQ opened this issue 1 year ago • 0 comments

Is there an existing feature request for this?

  • [X] I have searched the existing issues before opening this feature request.

Describe the feature you would like to see.

It would be great if the panel has the ability to create admin/databases using api-application route instead of creating the database host manulally.

Describe the solution you'd like.

I think we can add the following to api-application route in the file routes\api-application.php we can add Route::post('/', [Admin\DatabaseController::class, 'create']);

under Endpoint: /api/application/nodes and modify the create method instead of returning redirect response to be the same as the return response from this endpoint Route::post('/', [Application\Servers\DatabaseController::class, 'store']);

this way we can call api/application/nodes/admin/databases and create a the host database

Simple workaround was to add the following code to panel api-application.

1- routes/api-application.php

// added use admin controller at the top
use Pterodactyl\Http\Controllers\Admin;

/*
|--------------------------------------------------------------------------
| Node Controller Routes
|--------------------------------------------------------------------------
|
| Endpoint: /api/application/nodes
|
*/
Route::group(['prefix' => '/nodes'], function () {
    // databases
    Route::post('/admin/databases', [Admin\DatabaseController::class, 'createdb']);
    Route::delete('/admin/databases/{host:id}', [Admin\DatabaseController::class, 'deletedb']);

    ... the rest of the code
});

2- app/Http/Controllers/Admin/DatabaseController.php

// added use Response at the top
use Illuminate\Http\Response;

/**
* Handle request to create a new database host.
*
* @throws \Throwable
*/
public function createdb(DatabaseHostFormRequest $request): Response
{
    $host = $this->creationService->handle($request->normalize());

    return response($host, 200);
}

/**
* Handle request to delete a database host.
*
* @throws \Pterodactyl\Exceptions\Service\HasActiveServersException
*/
public function deletedb(int $host): Response
{
    $this->deletionService->handle($host);

    return response('', 204);
}

CODEHUBHQ avatar Sep 26 '24 18:09 CODEHUBHQ