From 1df00d2b9bc7d042b74a4ef7e4d8051355e5b93a Mon Sep 17 00:00:00 2001 From: Anon Dev <85408287+anondev-sudo@users.noreply.github.com> Date: Sun, 6 Jun 2021 11:25:47 +0200 Subject: [PATCH 1/4] Update main.blade.php --- resources/views/layouts/main.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/layouts/main.blade.php b/resources/views/layouts/main.blade.php index 808b9858..6d1d649f 100644 --- a/resources/views/layouts/main.blade.php +++ b/resources/views/layouts/main.blade.php @@ -34,7 +34,7 @@ Home From 164ddbe24e7be0c40d908fc7296d84fea6e820be Mon Sep 17 00:00:00 2001 From: Anon Dev <85408287+anondev-sudo@users.noreply.github.com> Date: Sun, 6 Jun 2021 11:28:09 +0200 Subject: [PATCH 2/4] Update home.blade.php --- resources/views/home.blade.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index 61c74571..43e786f5 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -58,8 +58,8 @@
- Usage - {{number_format($useage, 2, '.', '')}} p/m + Credit usage + {{number_format($useage, 2, '.', '')}} per month
@@ -83,23 +83,23 @@
-
Pterodactyl Panel
Use your servers on our pterodactyl panel (You can use the same login details)
-
phpMyAdmin
View your database online using phpMyAdmin
-
Discord
- Need a helping hand? want to chat? got any questions? Join our discord! + Need a helping hand? Want to chat? Got any questions? Join our discord!
From 56ea86ad50e9dcd50efa333a0a0d3b29cc94555d Mon Sep 17 00:00:00 2001 From: Anon Dev <85408287+anondev-sudo@users.noreply.github.com> Date: Sun, 6 Jun 2021 11:29:53 +0200 Subject: [PATCH 3/4] Update WelcomeMessage.php --- app/Notifications/WelcomeMessage.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Notifications/WelcomeMessage.php b/app/Notifications/WelcomeMessage.php index bb2b6de8..d74390a2 100644 --- a/app/Notifications/WelcomeMessage.php +++ b/app/Notifications/WelcomeMessage.php @@ -52,7 +52,7 @@ class WelcomeMessage extends Notification
Verification

Please verify your email address to get " . Configuration::getValueByKey('CREDITS_REWARD_AFTER_VERIFY_EMAIL') . " extra credits and increase your server limit to " . Configuration::getValueByKey('SERVER_LIMIT_REWARD_AFTER_VERIFY_EMAIL') . "
You can also verify your discord account to get another " . Configuration::getValueByKey('CREDITS_REWARD_AFTER_VERIFY_DISCORD') . " credits and to increase your server limit again with " . Configuration::getValueByKey('SERVER_LIMIT_REWARD_AFTER_VERIFY_DISCORD') . "

Information
-

This dashboard can be used to create and delete servers.
These servers can be used and managed thru our pterodactyl panel.
If you have any questions, please join our Discord and #create-a-ticket.

+

This dashboard can be used to create and delete servers.
These servers can be used and managed on our pterodactyl panel.
If you have any questions, please join our Discord server and #create-a-ticket.

We hope you can enjoy this hosting experience and if you have any suggestions please let us know!

Regards,
" . config('app.name', 'Laravel') . "

", From 7c644b39608825dd99e51390fe76e75196aa174a Mon Sep 17 00:00:00 2001 From: AVMG20 Date: Sun, 6 Jun 2021 12:11:35 +0200 Subject: [PATCH 4/4] added the ability to edit users pterodactyl id --- app/Classes/Pterodactyl.php | 74 +++++++++++-------- app/Http/Controllers/Admin/UserController.php | 23 ++++-- resources/views/admin/users/edit.blade.php | 14 ++++ 3 files changed, 75 insertions(+), 36 deletions(-) diff --git a/app/Classes/Pterodactyl.php b/app/Classes/Pterodactyl.php index 3905552b..3d95abaa 100644 --- a/app/Classes/Pterodactyl.php +++ b/app/Classes/Pterodactyl.php @@ -3,7 +3,6 @@ namespace App\Classes; use App\Models\Egg; -use App\Models\Location; use App\Models\Nest; use App\Models\Node; use App\Models\Server; @@ -14,9 +13,33 @@ use Illuminate\Support\Facades\Http; class Pterodactyl { + /** + * @return PendingRequest + */ + public static function client() + { + return Http::withHeaders([ + 'Authorization' => 'Bearer ' . env('PTERODACTYL_TOKEN', false), + 'Content-type' => 'application/json', + 'Accept' => 'Application/vnd.pterodactyl.v1+json', + ])->baseUrl(env('PTERODACTYL_URL') . '/api'); + } + + /** + * Get user by pterodactyl id + * @param int $pterodactylId + * @return mixed + */ + public static function getUser(int $pterodactylId){ + $response = self::client()->get("/application/users/{$pterodactylId}"); + if ($response->failed()) return null; + return $response->json()['attributes']; + } + /** * @param Node $node * @return array|mixed|null + * @throws Exception */ public static function getFreeAllocations(Node $node) { @@ -98,17 +121,6 @@ class Pterodactyl return $response->json(); } - /** - * @return PendingRequest - */ - public static function client() - { - return Http::withHeaders([ - 'Authorization' => 'Bearer ' . env('PTERODACTYL_TOKEN', false), - 'Content-type' => 'application/json', - 'Accept' => 'Application/vnd.pterodactyl.v1+json', - ])->baseUrl(env('PTERODACTYL_URL') . '/api'); - } /** * @param String $route @@ -125,41 +137,43 @@ class Pterodactyl * @param Node $node * @return Response */ - public static function createServer(Server $server , Egg $egg , Node $node) + public static function createServer(Server $server, Egg $egg, Node $node) { return self::client()->post("/application/servers", [ - "name" => $server->name, - "external_id" => $server->id, - "user" => $server->user->pterodactyl_id, - "egg" => $egg->id, - "docker_image" => $egg->docker_image, - "startup" => $egg->startup, - "environment" => $egg->getEnvironmentVariables(), - "limits" => [ + "name" => $server->name, + "external_id" => $server->id, + "user" => $server->user->pterodactyl_id, + "egg" => $egg->id, + "docker_image" => $egg->docker_image, + "startup" => $egg->startup, + "environment" => $egg->getEnvironmentVariables(), + "limits" => [ "memory" => $server->product->memory, - "swap" => $server->product->swap, - "disk" => $server->product->disk, - "io" => $server->product->io, - "cpu" => $server->product->cpu + "swap" => $server->product->swap, + "disk" => $server->product->disk, + "io" => $server->product->io, + "cpu" => $server->product->cpu ], "feature_limits" => [ - "databases" => $server->product->databases, - "backups" => $server->product->backups, + "databases" => $server->product->databases, + "backups" => $server->product->backups, "allocations" => 1 ], - "allocation" => [ + "allocation" => [ "default" => Pterodactyl::getFreeAllocationId($node) ] ]); } - public static function suspendServer(Server $server){ + public static function suspendServer(Server $server) + { $response = self::client()->post("/application/servers/$server->pterodactyl_id/suspend"); if ($response->failed()) throw self::getException(); return $response; } - public static function unSuspendServer(Server $server){ + public static function unSuspendServer(Server $server) + { $response = self::client()->post("/application/servers/$server->pterodactyl_id/unsuspend"); if ($response->failed()) throw self::getException(); return $response; diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 00922bcf..95eee5a4 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -2,8 +2,10 @@ namespace App\Http\Controllers\Admin; +use App\Classes\Pterodactyl; use App\Http\Controllers\Controller; use App\Models\User; +use Exception; use Illuminate\Contracts\Foundation\Application; use Illuminate\Contracts\View\Factory; use Illuminate\Contracts\View\View; @@ -12,6 +14,7 @@ use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Support\Facades\Auth; use Illuminate\Validation\Rule; +use Illuminate\Validation\ValidationException; class UserController extends Controller { @@ -79,17 +82,25 @@ class UserController extends Controller * @param Request $request * @param User $user * @return RedirectResponse + * @throws Exception */ public function update(Request $request, User $user) { $request->validate([ - "name" => "required|string|min:4|max:30", - "email" => "required|string|email", - "credits" => "required|numeric|min:0|max:1000000", - "server_limit" => "required|numeric|min:0|max:1000000", - "role" => Rule::in(['admin', 'mod', 'client', 'member']), + "name" => "required|string|min:4|max:30", + "pterodactyl_id" => "required|numeric|unique:users,pterodactyl_id,{$user->pterodactyl_id}", + "email" => "required|string|email", + "credits" => "required|numeric|min:0|max:1000000", + "server_limit" => "required|numeric|min:0|max:1000000", + "role" => Rule::in(['admin', 'mod', 'client', 'member']), ]); + if (is_null(Pterodactyl::getUser($request->input('pterodactyl_id')))){ + throw ValidationException::withMessages([ + 'pterodactyl_id' => ["User does not exists on pterodactyl's panel"] + ]); + } + $user->update($request->all()); return redirect()->route('admin.users.index')->with('success', 'User updated!'); @@ -146,7 +157,7 @@ class UserController extends Controller /** * - * @throws \Exception + * @throws Exception */ public function dataTable() { diff --git a/resources/views/admin/users/edit.blade.php b/resources/views/admin/users/edit.blade.php index 865ad3b1..583d77a3 100644 --- a/resources/views/admin/users/edit.blade.php +++ b/resources/views/admin/users/edit.blade.php @@ -51,6 +51,20 @@ @enderror +
+ + + @error('pterodactyl_id') +
+ {{$message}} +
+ @enderror +
+ This ID refers to the user account created on pterodactyl's panel.
+ Only edit this if you know what you're doing :) +
+