From a7fdb9618cb323e1715f1253d642abda6252b795 Mon Sep 17 00:00:00 2001 From: Dane Everitt Date: Sun, 3 Jan 2016 15:15:14 -0500 Subject: [PATCH] support for changing allocation on frontend --- .../Controllers/Server/AjaxController.php | 34 +++++++++++++++++ app/Http/Routes/ServerRoutes.php | 1 + app/Policies/ServerPolicy.php | 16 ++++++++ resources/views/server/index.blade.php | 38 +++++++++++++++++-- 4 files changed, 86 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Server/AjaxController.php b/app/Http/Controllers/Server/AjaxController.php index fe353a3a..48af2eb9 100644 --- a/app/Http/Controllers/Server/AjaxController.php +++ b/app/Http/Controllers/Server/AjaxController.php @@ -178,4 +178,38 @@ class AjaxController extends Controller } + /** + * [postSetConnection description] + * @param Request $request + * @param string $uuid + * @return \Illuminate\Http\Response + */ + public function postSetConnection(Request $request, $uuid) + { + + $server = Server::getByUUID($uuid); + $this->authorize('set-connection', $server); + + try { + + $repo = new Repositories\ServerRepository; + $repo->changeBuild($server->id, [ + 'default' => $request->input('connection'), + ]); + return response('The default connection for this server has been updated. Please be aware that you will need to restart your server for this change to go into effect.'); + + } catch (\Exception $e) { + if ($e instanceof \Pterodactyl\Exceptions\DisplayException || $e instanceof \Pterodactyl\Exceptions\DisplayValidationException) { + return response()->json([ + 'error' => $e->getMessage(), + ], 503); + } else { + Log::error($e); + return response()->json([ + 'error' => 'An unhandled exception occured while attemping to modify the default connection for this server.' + ], 503); + } + } + } + } diff --git a/app/Http/Routes/ServerRoutes.php b/app/Http/Routes/ServerRoutes.php index b775eecc..5c97156c 100644 --- a/app/Http/Routes/ServerRoutes.php +++ b/app/Http/Routes/ServerRoutes.php @@ -18,6 +18,7 @@ class ServerRoutes { // Ajax Routes $router->group(['prefix' => 'ajax'], function ($server) use ($router) { $router->get('status', [ 'uses' => 'Server\AjaxController@getStatus' ]); + $router->post('set-connection', [ 'uses' => 'Server\AjaxController@postSetConnection' ]); $router->post('files/directory-list', [ 'uses' => 'Server\AjaxController@postDirectoryList' ]); $router->post('files/save', [ 'uses' => 'Server\AjaxController@postSaveFile' ]); }); diff --git a/app/Policies/ServerPolicy.php b/app/Policies/ServerPolicy.php index 338a3385..2f9355cc 100644 --- a/app/Policies/ServerPolicy.php +++ b/app/Policies/ServerPolicy.php @@ -175,4 +175,20 @@ class ServerPolicy return $user->permissions()->server($server)->permission('download-files')->exists(); } + /** + * Check if user has permission to change the default connection information. + * + * @param Pterodactyl\Models\User $user + * @param Pterodactyl\Models\Server $server + * @return boolean + */ + public function setConnection(User $user, Server $server) + { + if ($this->isOwner($user, $server)) { + return true; + } + + return $user->permissions()->server($server)->permission('set-connection')->exists(); + } + } diff --git a/resources/views/server/index.blade.php b/resources/views/server/index.blade.php index 45719eb7..b84ba229 100644 --- a/resources/views/server/index.blade.php +++ b/resources/views/server/index.blade.php @@ -88,7 +88,7 @@
Below is a listing of all avaliable IPs and Ports for your service. To change the default connection address for your server, simply click on the one you would like to make default below.
-