diff --git a/app/Http/Controllers/Server/AjaxController.php b/app/Http/Controllers/Server/AjaxController.php index db5a094a7..a789a93c6 100644 --- a/app/Http/Controllers/Server/AjaxController.php +++ b/app/Http/Controllers/Server/AjaxController.php @@ -183,6 +183,12 @@ class AjaxController extends Controller $server = Server::getByUUID($uuid); $this->authorize('set-connection', $server); + if ($request->input('connection') === $server->ip . ':' . $server->port) { + return response()->json([ + 'error' => 'You are already using this as your default connection.' + ], 409); + } + try { $repo = new Repositories\ServerRepository; diff --git a/app/Policies/ServerPolicy.php b/app/Policies/ServerPolicy.php index 0bb59caa5..977b5accf 100644 --- a/app/Policies/ServerPolicy.php +++ b/app/Policies/ServerPolicy.php @@ -221,6 +221,13 @@ class ServerPolicy return $user->permissions()->server($server)->permission('view-manage')->exists(); } + /** + * Check if user has permission to view allocations for a server. + * + * @param Pterodactyl\Models\User $user + * @param Pterodactyl\Models\Server $server + * @return boolean + */ public function viewAllocation(User $user, Server $server) { if ($this->isOwner($user, $server)) { @@ -230,4 +237,20 @@ class ServerPolicy return $user->permissions()->server($server)->permission('view-allocation')->exists(); } + /** + * Check if user has permission to set the default connection for a server. + * + * @param Pterodactyl\Models\User $user + * @param Pterodactyl\Models\Server $server + * @return boolean + */ + public function setAllocation(User $user, Server $server) + { + if ($this->isOwner($user, $server)) { + return true; + } + + return $user->permissions()->server($server)->permission('set-allocation')->exists(); + } + } diff --git a/resources/views/server/index.blade.php b/resources/views/server/index.blade.php index 8ba699279..feeadf576 100644 --- a/resources/views/server/index.blade.php +++ b/resources/views/server/index.blade.php @@ -384,7 +384,7 @@ $(window).load(function () { } } - @can('view-allocation', $server) + @can('set-allocation', $server) // Send Request $('[data-action="set-connection"]').click(function (event) { event.preventDefault(); @@ -403,16 +403,26 @@ $(window).load(function () { 'X-CSRF-TOKEN': '{{ csrf_token() }}' } }).done(function (data) { + swal({ + type: 'success', + title: '', + text: data + }); $('#conn_options').find('li.active').removeClass('active'); element.parent().addClass('active'); - alert(data); }).fail(function (jqXHR) { console.error(jqXHR); + var respError; if (typeof jqXHR.responseJSON.error === 'undefined' || jqXHR.responseJSON.error === '') { - return alert('An error occured while attempting to perform this action.'); + respError = 'An error occured while attempting to perform this action.'; } else { - return alert(jqXHR.responseJSON.error); + respError = jqXHR.responseJSON.error; } + swal({ + type: 'error', + title: 'Whoops!', + text: respError + }); }); }); @endcan