From 266057b666c9ba518e1f595f3305234f03873c36 Mon Sep 17 00:00:00 2001 From: Jozef Bonnar <42479938+jozefbonnar@users.noreply.github.com> Date: Wed, 10 Aug 2022 19:11:02 +0100 Subject: [PATCH 1/5] Add forced email verify for admins --- app/Http/Controllers/Admin/UserController.php | 12 ++++++++++++ app/Models/User.php | 7 +++++++ public/install/index.php | 2 +- routes/web.php | 1 + 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 3deae9d1..61edbdbc 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -160,6 +160,17 @@ class UserController extends Controller $user->delete(); return redirect()->back()->with('success', __('user has been removed!')); } + /** + * Verifys the users email + * + * @param User $user + * @return RedirectResponse + */ + public function verifyEmail(Request $request, User $user) + { + $user->verifyEmail(); + return redirect()->back()->with('success', __('Email has been verified!')); + } /** * @param Request $request @@ -285,6 +296,7 @@ class UserController extends Controller $suspendText = $user->isSuspended() ? __("Unsuspend") : __("Suspend"); return ' +
diff --git a/app/Models/User.php b/app/Models/User.php index 5f8af024..2885c5ba 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -259,4 +259,11 @@ class User extends Authenticatable implements MustVerifyEmail $status = str_replace(' ', '/', $status); return $status; } + + public function verifyEmail() + { + $this->forceFill([ + 'email_verified_at' => now(), + ])->save(); + } } diff --git a/public/install/index.php b/public/install/index.php index 562e4a3b..70a7fb18 100644 --- a/public/install/index.php +++ b/public/install/index.php @@ -448,7 +448,7 @@ echo $cardheader; ?>

All done!

You may navigate to your Dashboard now and log in!

- "> + "> diff --git a/routes/web.php b/routes/web.php index 168549f7..1f296199 100644 --- a/routes/web.php +++ b/routes/web.php @@ -103,6 +103,7 @@ Route::middleware(['auth', 'checkSuspended'])->group(function () { #users Route::get("users.json", [UserController::class, "json"])->name('users.json'); Route::get('users/loginas/{user}', [UserController::class, 'loginAs'])->name('users.loginas'); + Route::get('users/verifyEmail/{user}', [UserController::class, 'verifyEmail'])->name('users.verifyEmail'); Route::get('users/datatable', [UserController::class, 'datatable'])->name('users.datatable'); Route::get('users/notifications', [UserController::class, 'notifications'])->name('users.notifications'); Route::post('users/notifications', [UserController::class, 'notify'])->name('users.notifications'); From 62700a91f6dce889a69c9b13e689b0a62d8a2b97 Mon Sep 17 00:00:00 2001 From: Jozef Bonnar <42479938+jozefbonnar@users.noreply.github.com> Date: Wed, 10 Aug 2022 19:14:07 +0100 Subject: [PATCH 2/5] fixed formatting --- app/Models/User.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/Models/User.php b/app/Models/User.php index 2885c5ba..8d9c9848 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -260,10 +260,10 @@ class User extends Authenticatable implements MustVerifyEmail return $status; } - public function verifyEmail() - { - $this->forceFill([ - 'email_verified_at' => now(), - ])->save(); - } + public function verifyEmail() + { + $this->forceFill([ + 'email_verified_at' => now(), + ])->save(); + } } From 6bbbfa041e284520c1ce529c0820cb28ca4a2983 Mon Sep 17 00:00:00 2001 From: Dennis Date: Thu, 11 Aug 2022 08:06:40 +0200 Subject: [PATCH 3/5] GetNodeInfo --- app/Classes/Pterodactyl.php | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/app/Classes/Pterodactyl.php b/app/Classes/Pterodactyl.php index bee54b71..60b7f7fc 100644 --- a/app/Classes/Pterodactyl.php +++ b/app/Classes/Pterodactyl.php @@ -86,6 +86,33 @@ class Pterodactyl if ($response->failed()) throw self::getException("Failed to get nodes from pterodactyl - ", $response->status()); return $response->json()['data']; } + + /** + * @return mixed + * @throws Exception + * @description Returns the infos of a single node + */ + public static function getNode($id) { + try { + $response = self::client()->get('/application/nodes/' . $id); + } catch(Exception $e) { + throw self::getException($e->getMessage()); + } + if($response->failed()) throw self::getException("Failed to get node id " . $id . " - " . $response->status()); + return $response->json()['attributes']; + } + + + + public static function getServers() { + try { + $response = self::client()->get('/application/servers'); + } catch (Exception $e) { + throw self::getException($e->getMessage()); + } + if($response->failed()) throw self::getException("Failed to get list of servers - ", $response->status()); + return $response->json()['data']; + } /** * @return null From c32d6f5e2e49acfcce4ab8a7b86dab1cffe1e6ce Mon Sep 17 00:00:00 2001 From: Dennis Date: Thu, 11 Aug 2022 08:10:24 +0200 Subject: [PATCH 4/5] Check for Node allocations --- app/Http/Controllers/ServerController.php | 24 ++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/ServerController.php b/app/Http/Controllers/ServerController.php index c1c0a33a..58ed691f 100644 --- a/app/Http/Controllers/ServerController.php +++ b/app/Http/Controllers/ServerController.php @@ -101,9 +101,31 @@ class ServerController extends Controller return redirect()->route('servers.index')->with('error', __('Server limit reached!')); } - // minimum credits + // minimum credits && Check for Allocation if (FacadesRequest::has("product")) { $product = Product::findOrFail(FacadesRequest::input("product")); + // Can we allocate the node? If not then error lol(I don't like overallocation) + $node = Pterodactyl::getNode(FacadesRequest::input('node')); + $nodeMem = $node['memory']; + $nodeDisk = $node['disk']; + $nodeName = $node['name']; + $currServers = Auth::user()->servers(); + $currMem = 0; + $currDisk = 0; + foreach($currServers as $currServer) { + $pteroServer = $currServer->getPterodactylServer(); + $psvAttr = $pteroServer['attributes']; + if($psvAttr['node'] != $node['id']) + continue; + $currMem += $psvAttr['limits']['memory']; + $currDisk += $psvAttr['limits']['disk']; + } + $currMem += $product->memory; + $currDisk += $product->disk; + if($currMem > $nodeMem || $currDisk > $nodeDisk) + return redirect()->route('servers.index')->with('error', "The node '" . $nodeName . "' doesn't have the required memory or disk left to allocate this product."); + + // Min. Credits if ( Auth::user()->credits < ($product->minimum_credits == -1 From 1c8d1c233454c35c0de641d291feeb6658eafa5d Mon Sep 17 00:00:00 2001 From: Dennis Date: Thu, 11 Aug 2022 12:27:52 +0200 Subject: [PATCH 5/5] translation strings and formatting --- resources/views/servers/settings.blade.php | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/resources/views/servers/settings.blade.php b/resources/views/servers/settings.blade.php index f7db9fd1..91b3997d 100644 --- a/resources/views/servers/settings.blade.php +++ b/resources/views/servers/settings.blade.php @@ -224,39 +224,39 @@