diff --git a/app/Classes/Settings/System.php b/app/Classes/Settings/System.php index 56e9d480..3cfd8517 100644 --- a/app/Classes/Settings/System.php +++ b/app/Classes/Settings/System.php @@ -44,8 +44,17 @@ public function checkPteroClientkey(){ "pterodactyl-url" => "required|string", "per-page-limit" => "required|min:0|integer", "pterodactyl-admin-api-key" => "required|string", + "enable-upgrades" => "string", ]); + + $validator->after(function ($validator) use ($request) { + // if enable-recaptcha is true then recaptcha-site-key and recaptcha-secret-key must be set + if ($request->get('enable-upgrades') == 'true' && (!$request->get('pterodactyl-admin-api-key'))) { + $validator->errors()->add('pterodactyl-admin-api-key', 'The admin api key is required when upgrades are enabled.'); + } + }); + if ($validator->fails()) { return redirect(route('admin.settings.index') . '#system')->with('error', __('System settings have not been updated!'))->withErrors($validator) ->withInput(); @@ -75,6 +84,7 @@ public function checkPteroClientkey(){ "SETTINGS::SYSTEM:PTERODACTYL:TOKEN" => "pterodactyl-api-key", "SETTINGS::SYSTEM:ENABLE_LOGIN_LOGO" => "enable-login-logo", "SETTINGS::SYSTEM:PTERODACTYL:ADMIN_USER_TOKEN" => "pterodactyl-admin-api-key", + "SETTINGS::SYSTEM:ENABLE_UPGRADE" => "enable-upgrade", ]; diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index a9429689..62089d7e 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -3,9 +3,12 @@ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; +use App\Models\User; use App\Providers\RouteServiceProvider; use Illuminate\Foundation\Auth\AuthenticatesUsers; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Log; class LoginController extends Controller { @@ -66,6 +69,9 @@ class LoginController extends Controller } if ($this->attemptLogin($request)) { + $user = Auth::user(); + $user->last_seen = now(); + $user->save(); return $this->sendLoginResponse($request); } diff --git a/app/Http/Controllers/ServerController.php b/app/Http/Controllers/ServerController.php index f53f4756..cf731ddf 100644 --- a/app/Http/Controllers/ServerController.php +++ b/app/Http/Controllers/ServerController.php @@ -268,7 +268,7 @@ class ServerController extends Controller $serverAttributes = Pterodactyl::getServerAttributes($server->pterodactyl_id); $serverRelationships = $serverAttributes['relationships']; - // Get node resource allocation info + // Get node resource allocation info $nodeId = $serverRelationships['node']['attributes']['id']; $node = Node::where('id', $nodeId)->firstOrFail(); $nodeName = $node->name; @@ -284,7 +284,7 @@ class ServerController extends Controller if ($priceupgrade < $oldProduct->getHourlyPrice()) { $priceupgrade = 0; } - if ($user->credits >= $priceupgrade) + if ($user->credits >= $priceupgrade && $user->credits >= $newProduct->minimum_credits) { $server->product_id = $request->product_upgrade; diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 5f9dd9ff..4a193f98 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -107,12 +107,30 @@ class AppServiceProvider extends ServiceProvider Artisan::call('cache:clear'); } + + try { + $stringfromfile = file(base_path().'/.git/HEAD'); + + $firstLine = $stringfromfile[0]; //get the string from the array + + $explodedstring = explode("/", $firstLine, 3); //seperate out by the "/" in the string + + $branchname = $explodedstring[2]; //get the one that is always the branch name + } catch (Exception $e) { + $branchname = "unknown"; + Log::error($e); + } + config(['BRANCHNAME' => $branchname]); + + // Set Discord-API Config config(['services.discord.client_id' => config('SETTINGS::DISCORD:CLIENT_ID')]); config(['services.discord.client_secret' => config('SETTINGS::DISCORD:CLIENT_SECRET')]); } catch (Exception $e) { - error_log("Settings Error: Could not load settings from database"); - Log::error("Settings Error: Could not load settings from database"); + error_log("Settings Error: Could not load settings from database. The Installation probably is not done yet."); + error_log($e); + Log::error("Settings Error: Could not load settings from database. The Installation probably is not done yet."); + Log::error($e); } } } diff --git a/config/app.php b/config/app.php index 0d7b8c9f..90bdfdde 100644 --- a/config/app.php +++ b/config/app.php @@ -4,7 +4,7 @@ use App\Models\Settings; return [ - 'version' => '0.8.1', + 'version' => '0.8.2', /* |-------------------------------------------------------------------------- diff --git a/database/seeders/Seeds/SettingsSeeder.php b/database/seeders/Seeds/SettingsSeeder.php index 95a110de..4e9dc12d 100644 --- a/database/seeders/Seeds/SettingsSeeder.php +++ b/database/seeders/Seeds/SettingsSeeder.php @@ -515,5 +515,12 @@ class SettingsSeeder extends Seeder 'type' => 'string', 'description' => 'The Client API Key of an Pterodactyl Admin Account' ]); + Settings::firstOrCreate([ + 'key' => 'SETTINGS::SYSTEM:ENABLE_UPGRADE', + ], [ + 'value' =>"", + 'type' => 'string', + 'description' => 'Enables the updgrade/downgrade feature for servers' + ]); } } diff --git a/resources/views/admin/api/index.blade.php b/resources/views/admin/api/index.blade.php index 6eaf5fba..377095b1 100644 --- a/resources/views/admin/api/index.blade.php +++ b/resources/views/admin/api/index.blade.php @@ -65,7 +65,7 @@ document.addEventListener("DOMContentLoaded", function () { $('#datatable').DataTable({ language: { - url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json' + url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("SETTINGS::LOCALE:DATATABLES")}}.json' }, processing: true, serverSide: true, diff --git a/resources/views/admin/nests/index.blade.php b/resources/views/admin/nests/index.blade.php index 843bbe5f..152773e4 100644 --- a/resources/views/admin/nests/index.blade.php +++ b/resources/views/admin/nests/index.blade.php @@ -75,7 +75,7 @@ THIS FILE IS DEPRECATED document.addEventListener("DOMContentLoaded", function () { $('#datatable').DataTable({ language: { - url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json' + url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("SETTINGS::LOCALE:DATATABLES")}}.json' }, processing: true, serverSide: true, diff --git a/resources/views/admin/nodes/index.blade.php b/resources/views/admin/nodes/index.blade.php index d6fe5034..bb57e0ce 100644 --- a/resources/views/admin/nodes/index.blade.php +++ b/resources/views/admin/nodes/index.blade.php @@ -75,7 +75,7 @@ THIS FILE IS DEPRECATED document.addEventListener("DOMContentLoaded", function () { $('#datatable').DataTable({ language: { - url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json' + url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("SETTINGS::LOCALE:DATATABLES")}}.json' }, processing: true, serverSide: true, diff --git a/resources/views/admin/overview/index.blade.php b/resources/views/admin/overview/index.blade.php index bfc81563..fa9c9124 100644 --- a/resources/views/admin/overview/index.blade.php +++ b/resources/views/admin/overview/index.blade.php @@ -142,6 +142,21 @@ {{__('Last updated :date', ['date' => $syncLastUpdate])}} +
+
+
+
+ {{__('Controlpanel.gg')}} +
+
+
+ +
+ +
+
diff --git a/resources/views/admin/payments/index.blade.php b/resources/views/admin/payments/index.blade.php index c60debba..6f907c36 100644 --- a/resources/views/admin/payments/index.blade.php +++ b/resources/views/admin/payments/index.blade.php @@ -66,7 +66,7 @@ document.addEventListener("DOMContentLoaded", function() { $('#datatable').DataTable({ language: { - url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json' + url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("SETTINGS::LOCALE:DATATABLES")}}.json' }, processing: true, serverSide: true, diff --git a/resources/views/admin/products/index.blade.php b/resources/views/admin/products/index.blade.php index b7c241b3..30d2b712 100644 --- a/resources/views/admin/products/index.blade.php +++ b/resources/views/admin/products/index.blade.php @@ -78,7 +78,7 @@ document.addEventListener("DOMContentLoaded", function () { $("#datatable").DataTable({ language: { - url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json' + url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("SETTINGS::LOCALE:DATATABLES")}}.json' }, processing: true, serverSide: true, diff --git a/resources/views/admin/servers/table.blade.php b/resources/views/admin/servers/table.blade.php index 09426c76..b71671de 100644 --- a/resources/views/admin/servers/table.blade.php +++ b/resources/views/admin/servers/table.blade.php @@ -23,7 +23,7 @@ document.addEventListener("DOMContentLoaded", function () { $('#datatable').DataTable({ language: { - url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json' + url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("SETTINGS::LOCALE:DATATABLES")}}.json' }, processing: true, serverSide: true, diff --git a/resources/views/admin/settings/tabs/system.blade.php b/resources/views/admin/settings/tabs/system.blade.php index 899dc133..dee381c2 100644 --- a/resources/views/admin/settings/tabs/system.blade.php +++ b/resources/views/admin/settings/tabs/system.blade.php @@ -102,6 +102,11 @@ + @error('pterodactyl-admin-api-key') +
+ {{$message}} +
+ @enderror
@@ -189,6 +194,21 @@

{{ __('Server') }}

+
+
+
+
+ + +
+ +
+
+
@@ -202,6 +222,8 @@ class="form-control @error('allocation-limit') is-invalid @enderror" required>
+ +
{{-- Design --}} diff --git a/resources/views/admin/usefullinks/index.blade.php b/resources/views/admin/usefullinks/index.blade.php index f0cc60a6..32100334 100644 --- a/resources/views/admin/usefullinks/index.blade.php +++ b/resources/views/admin/usefullinks/index.blade.php @@ -67,7 +67,7 @@ document.addEventListener("DOMContentLoaded", function () { $('#datatable').DataTable({ language: { - url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json' + url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("SETTINGS::LOCALE:DATATABLES")}}.json' }, processing: true, serverSide: true, diff --git a/resources/views/admin/users/index.blade.php b/resources/views/admin/users/index.blade.php index 7cf8665d..b3a0e87f 100644 --- a/resources/views/admin/users/index.blade.php +++ b/resources/views/admin/users/index.blade.php @@ -74,7 +74,7 @@ document.addEventListener("DOMContentLoaded", function () { $('#datatable').DataTable({ language: { - url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json' + url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("SETTINGS::LOCALE:DATATABLES")}}.json' }, processing: true, serverSide: false, //increases loading times too much? change back to "true" if it does diff --git a/resources/views/admin/vouchers/index.blade.php b/resources/views/admin/vouchers/index.blade.php index 59f0efc6..1f60e9aa 100644 --- a/resources/views/admin/vouchers/index.blade.php +++ b/resources/views/admin/vouchers/index.blade.php @@ -70,7 +70,7 @@ document.addEventListener("DOMContentLoaded", function () { $('#datatable').DataTable({ language: { - url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json' + url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("SETTINGS::LOCALE:DATATABLES")}}.json' }, processing: true, serverSide: true, diff --git a/resources/views/admin/vouchers/users.blade.php b/resources/views/admin/vouchers/users.blade.php index c12281fb..284dc1c3 100644 --- a/resources/views/admin/vouchers/users.blade.php +++ b/resources/views/admin/vouchers/users.blade.php @@ -63,7 +63,7 @@ document.addEventListener("DOMContentLoaded", function() { $('#datatable').DataTable({ language: { - url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json' + url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("SETTINGS::LOCALE:DATATABLES")}}.json' }, processing: true, serverSide: true, diff --git a/resources/views/layouts/main.blade.php b/resources/views/layouts/main.blade.php index 55fa3ceb..ae31b5e1 100644 --- a/resources/views/layouts/main.blade.php +++ b/resources/views/layouts/main.blade.php @@ -403,8 +403,10 @@ Copyright © 2021-{{ date('Y') }} {{ env('APP_NAME', 'Laravel') }}. All rights - reserved. Powered by ControlPanel. Version - {{ config('app')['version'] }} + reserved. Powered by ControlPanel. + @if(!str_contains(config("BRANCHNAME"),"main")) + Version {{ config('app')['version'] }} - {{config("BRANCHNAME")}} + @endif diff --git a/resources/views/moderator/ticket/blacklist.blade.php b/resources/views/moderator/ticket/blacklist.blade.php index 2a8d8f2a..403a5b90 100644 --- a/resources/views/moderator/ticket/blacklist.blade.php +++ b/resources/views/moderator/ticket/blacklist.blade.php @@ -90,7 +90,7 @@ document.addEventListener("DOMContentLoaded", function () { $('#datatable').DataTable({ language: { - url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json' + url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("SETTINGS::LOCALE:DATATABLES")}}.json' }, processing: true, serverSide: true, diff --git a/resources/views/moderator/ticket/index.blade.php b/resources/views/moderator/ticket/index.blade.php index 203ca227..3ec056a4 100644 --- a/resources/views/moderator/ticket/index.blade.php +++ b/resources/views/moderator/ticket/index.blade.php @@ -48,10 +48,10 @@ - + - + @@ -63,7 +63,7 @@ document.addEventListener("DOMContentLoaded", function () { $('#datatable').DataTable({ language: { - url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json' + url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("SETTINGS::LOCALE:DATATABLES")}}.json' }, processing: true, serverSide: true, diff --git a/resources/views/moderator/ticket/show.blade.php b/resources/views/moderator/ticket/show.blade.php index 18e4ebaa..22bd2ea1 100644 --- a/resources/views/moderator/ticket/show.blade.php +++ b/resources/views/moderator/ticket/show.blade.php @@ -51,6 +51,11 @@ @endif

Created on: {{ $ticket->created_at->diffForHumans() }}

+
+ {{csrf_field()}} + {{method_field("POST") }} + +
diff --git a/resources/views/servers/settings.blade.php b/resources/views/servers/settings.blade.php index 7607de10..e320533c 100644 --- a/resources/views/servers/settings.blade.php +++ b/resources/views/servers/settings.blade.php @@ -221,16 +221,14 @@ + @endif