From 795b2f3f8f2b1b3adb3caa221842d514b9a7d801 Mon Sep 17 00:00:00 2001 From: AnonDev <85408287+anondev-sudo@users.noreply.github.com> Date: Thu, 1 Jul 2021 12:20:29 +0200 Subject: [PATCH 01/66] Update confirmed.blade.php --- resources/views/mail/payment/confirmed.blade.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/resources/views/mail/payment/confirmed.blade.php b/resources/views/mail/payment/confirmed.blade.php index 9e79855f..e8a30931 100644 --- a/resources/views/mail/payment/confirmed.blade.php +++ b/resources/views/mail/payment/confirmed.blade.php @@ -1,16 +1,16 @@ @component('mail::message') # Thank you for your purchase! -Your payment has been confirmed; Your credit balance has been updated. +Your payment has been confirmed; Your credit balance has been updated.
# Details ___ -### Payment ID: **{{$payment->id}}** -### Status: **{{$payment->status}}** -### Price: **{{$payment->formatCurrency()}}** -### Type: **{{$payment->type}}** -### Amount: **{{$payment->amount}}** -### Balance: **{{$payment->user->credits}}** -### User ID: **{{$payment->user_id}}** +### Payment ID: **{{$payment->id}}**
+### Status: **{{$payment->status}}**
+### Price: **{{$payment->formatCurrency()}}**
+### Type: **{{$payment->type}}**
+### Amount: **{{$payment->amount}}**
+### Balance: **{{$payment->user->credits}}**
+### User ID: **{{$payment->user_id}}**

Thanks,
From f355caec7276f4984e86cc3aff70ba5b4de9f92e Mon Sep 17 00:00:00 2001 From: NickDevNL <70915191+nickdevnl@users.noreply.github.com> Date: Mon, 20 Sep 2021 17:20:29 +0200 Subject: [PATCH 02/66] Disabled button after button push. I disabled the submit button after you push it. So you can't spam click the button and create 30 servers and you can only create one a time. If you have more question dm me on discord ItsJustNickDev#9943 --- resources/views/servers/create.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/servers/create.blade.php b/resources/views/servers/create.blade.php index 18bc00eb..2427a46a 100644 --- a/resources/views/servers/create.blade.php +++ b/resources/views/servers/create.blade.php @@ -125,7 +125,7 @@ @enderror
- + From cc4e942d69a8653179e6b6fdca94a56c6843b373 Mon Sep 17 00:00:00 2001 From: Dennis Date: Wed, 22 Sep 2021 09:17:44 +0200 Subject: [PATCH 03/66] Show Days left till servers get suspended in Dashboard --- resources/views/home.blade.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index 5c13ea05..44726536 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -66,7 +66,21 @@
+ + +
+
+ +
+ Time left + {{number_format(({{Auth::user()->Credits()}}/30)*$useage), 0, '.', '')}} days left +
+ +
+ +
+ ` From 4d0e71539d08454046e74239637b4f636971274d Mon Sep 17 00:00:00 2001 From: Dennis Date: Wed, 22 Sep 2021 09:53:30 +0200 Subject: [PATCH 04/66] Update home.blade.php --- resources/views/home.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index 44726536..2df3dc2c 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -74,7 +74,7 @@
Time left - {{number_format(({{Auth::user()->Credits()}}/30)*$useage), 0, '.', '')}} days left + {{number_format((Auth::user()->Credits()/30)*$useage, 0, '.', '')}} days left
From 0c3749e5f0d3c550de182b95a7360767e80dc3a1 Mon Sep 17 00:00:00 2001 From: Dennis Date: Wed, 22 Sep 2021 09:56:39 +0200 Subject: [PATCH 05/66] Update home.blade.php --- resources/views/home.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index 2df3dc2c..114b6823 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -74,7 +74,7 @@
Time left - {{number_format((Auth::user()->Credits()/30)*$useage, 0, '.', '')}} days left + {{number_format((Auth::user()->Credits()*30)/$useage, 0, '.', '')}} days left
From 9fb8091ea54b502073a80c51e5957d6a4c0cd8bc Mon Sep 17 00:00:00 2001 From: Dennis Date: Wed, 22 Sep 2021 09:57:19 +0200 Subject: [PATCH 06/66] fixed a lil' math oopsie --- resources/views/home.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index 114b6823..981a9da6 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -74,7 +74,7 @@
Time left - {{number_format((Auth::user()->Credits()*30)/$useage, 0, '.', '')}} days left + {{number_format((Auth::user()->Credits()*30)/$useage, 0, '.', '')}} days
From 15c6bdce9bca48d14b6367623037bf67e27df8fe Mon Sep 17 00:00:00 2001 From: Dennis Date: Wed, 22 Sep 2021 16:04:21 +0200 Subject: [PATCH 07/66] Show Server price per Hour / per Month --- resources/views/servers/index.blade.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/resources/views/servers/index.blade.php b/resources/views/servers/index.blade.php index a8dd29e3..777baf0d 100644 --- a/resources/views/servers/index.blade.php +++ b/resources/views/servers/index.blade.php @@ -83,6 +83,10 @@ Backups {{$server->product->backups}} + + Price per Hour: {{number_format($server->product->getHourlyPrice(),2,".")}} Credits + Price per Month: {{number_format($server->product->getHourlyPrice()*24*30}} Credits + From 6d435122b794d2c2c8a48ae4bfe136ae3c49a88b Mon Sep 17 00:00:00 2001 From: Dennis Date: Wed, 22 Sep 2021 16:06:29 +0200 Subject: [PATCH 08/66] Cleaned a minor mistake --- resources/views/servers/index.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/servers/index.blade.php b/resources/views/servers/index.blade.php index 777baf0d..82771c74 100644 --- a/resources/views/servers/index.blade.php +++ b/resources/views/servers/index.blade.php @@ -85,7 +85,7 @@ Price per Hour: {{number_format($server->product->getHourlyPrice(),2,".")}} Credits - Price per Month: {{number_format($server->product->getHourlyPrice()*24*30}} Credits + Price per Month: {{$server->product->getHourlyPrice()*24*30}} Credits From 75f86614e9e90caf6d2aa9868068e3a1e458a0e8 Mon Sep 17 00:00:00 2001 From: Dennis Date: Wed, 22 Sep 2021 17:17:44 +0200 Subject: [PATCH 09/66] Correct intendation and table Setup as requested --- resources/views/servers/index.blade.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/resources/views/servers/index.blade.php b/resources/views/servers/index.blade.php index 82771c74..76f2d0dc 100644 --- a/resources/views/servers/index.blade.php +++ b/resources/views/servers/index.blade.php @@ -84,8 +84,12 @@ {{$server->product->backups}} - Price per Hour: {{number_format($server->product->getHourlyPrice(),2,".")}} Credits - Price per Month: {{$server->product->getHourlyPrice()*24*30}} Credits + Price per Hour + {{number_format($server->product->getHourlyPrice(),2,".")}} Credits + + + Price per Month + {{$server->product->getHourlyPrice()*24*30}} Credits From daf0bee8be6eafb3ad9fd52219058de7848941a1 Mon Sep 17 00:00:00 2001 From: Dennis Date: Wed, 22 Sep 2021 18:07:19 +0200 Subject: [PATCH 10/66] Change to Days/Hours and color changes It now changes to x hours left when its less than 1 Day left. Also changes color ranging from more than 14 Days = Green Between 14 and 7 Days = Yellow less than 7 days = red Im sure theres a way better way to code this but it works --- resources/views/home.blade.php | 37 ++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index 981a9da6..4ec088d4 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -38,7 +38,7 @@
- +
{{CREDITS_DISPLAY_NAME}} @@ -66,21 +66,32 @@
- - -
-
- -
- Time left - {{number_format((Auth::user()->Credits()*30)/$useage, 0, '.', '')}} days +
+
+ @if(number_format((Auth::user()->Credits()*30)/$useage,0,'.','') >= 15) + + @elseif (number_format((Auth::user()->Credits()*30)/$useage,0,'.','') >= 8 && number_format((Auth::user()->Credits()*30)/$useage,0,'.','') <= 14) + + @elseif (number_format((Auth::user()->Credits()*30)/$useage,0,'.','') <= 7) + + @endif + + +
+ Out of {{CREDITS_DISPLAY_NAME}} in + @if(number_format((Auth::user()->Credits()*30)/$useage,2,'.','') < "1") + {{number_format(Auth::user()->Credits()/($useage/30/24),0,'.','')}} hours + @else + {{number_format((Auth::user()->Credits()*30)/$useage,0,'.','')}} days + @endif +
+
- +
- -
- ` + +
From e3e2a6593b5c2cd260f6b4ee0dc4cfe222502892 Mon Sep 17 00:00:00 2001 From: Dennis Date: Wed, 22 Sep 2021 18:22:05 +0200 Subject: [PATCH 11/66] Using {{CREDITS_DISPLAY_NAME}} --- resources/views/servers/index.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/servers/index.blade.php b/resources/views/servers/index.blade.php index 76f2d0dc..bf153263 100644 --- a/resources/views/servers/index.blade.php +++ b/resources/views/servers/index.blade.php @@ -85,11 +85,11 @@ Price per Hour - {{number_format($server->product->getHourlyPrice(),2,".")}} Credits + {{number_format($server->product->getHourlyPrice(),2,".")}} {{CREDITS_DISPLAY_NAME}} Price per Month - {{$server->product->getHourlyPrice()*24*30}} Credits + {{$server->product->getHourlyPrice()*24*30}} {{CREDITS_DISPLAY_NAME}}
From 6bcc5d8f29a0d66a4c23291acafe882a6d8564a5 Mon Sep 17 00:00:00 2001 From: Jovan Jovanovic Date: Sat, 25 Sep 2021 04:03:14 +0200 Subject: [PATCH 12/66] Fix division by zero --- resources/views/home.blade.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index 4ec088d4..424cd48b 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -67,6 +67,7 @@
+ @if($useage > 0)
@if(number_format((Auth::user()->Credits()*30)/$useage,0,'.','') >= 15) @@ -91,6 +92,7 @@
+ @endif
From e43339cca6e89041ae414c965fb0d436b13fd634 Mon Sep 17 00:00:00 2001 From: GeckoBoy84 <67899387+GeckoBoy84@users.noreply.github.com> Date: Sat, 25 Sep 2021 13:37:11 +0100 Subject: [PATCH 13/66] Update checkout.blade.php Fix checkout details being the wrong way round. --- resources/views/store/checkout.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/store/checkout.blade.php b/resources/views/store/checkout.blade.php index 8355da4e..d6401374 100644 --- a/resources/views/store/checkout.blade.php +++ b/resources/views/store/checkout.blade.php @@ -42,7 +42,7 @@
- From + To
{{config('app.name' , 'Laravel')}}
Email: {{env('PAYPAL_EMAIL' , env('MAIL_FROM_NAME'))}} @@ -50,7 +50,7 @@
- To + From
{{Auth::user()->name}}
Email: {{Auth::user()->email}} From 4c060fd270128b0ad7ca6b034b479a722640c545 Mon Sep 17 00:00:00 2001 From: Johannes Date: Sun, 26 Sep 2021 17:50:13 +0200 Subject: [PATCH 14/66] Add the ability to Suspend Users --- app/Http/Controllers/Admin/UserController.php | 21 ++++ app/Http/Kernel.php | 6 +- app/Http/Middleware/CheckSuspended.php | 28 +++++ app/Models/User.php | 114 ++++++++++++------ ...26_150114_add_suspended_to_users_table.php | 32 +++++ resources/views/auth/login.blade.php | 4 + routes/web.php | 3 +- 7 files changed, 167 insertions(+), 41 deletions(-) create mode 100644 app/Http/Middleware/CheckSuspended.php create mode 100644 database/migrations/2021_09_26_150114_add_suspended_to_users_table.php diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 795ad553..50c4fc5e 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -221,6 +221,20 @@ class UserController extends Controller return redirect()->route('admin.users.notifications')->with('success', 'Notification sent!'); } + /** + * @param User $user + * @return RedirectResponse + */ + public function toggleSuspended(User $user){ + try { + !$user->isSuspended() ? $user->suspend() : $user->unSuspend(); + } catch (Exception $exception) { + return redirect()->back()->with('error', $exception->getMessage()); + } + + return redirect()->back()->with('success', 'User has been updated!'); + } + /** * * @throws Exception @@ -252,10 +266,17 @@ class UserController extends Controller return $user->last_seen ? $user->last_seen->diffForHumans() : ''; }) ->addColumn('actions', function (User $user) { + $suspendColor = $user->isSuspended() ? "btn-success" : "btn-warning"; + $suspendIcon = $user->isSuspended() ? "fa-play-circle" : "fa-pause-circle"; + $suspendText = $user->isSuspended() ? "Unsuspend" : "Suspend"; return ' +
+ ' . csrf_field() . ' + +
' . csrf_field() . ' ' . method_field("DELETE") . ' diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 572a8656..6454849a 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -3,6 +3,7 @@ namespace App\Http; use App\Http\Middleware\ApiAuthToken; +use App\Http\Middleware\CheckSuspended; use App\Http\Middleware\CreditsDisplayName; use App\Http\Middleware\isAdmin; use App\Http\Middleware\LastSeen; @@ -42,7 +43,7 @@ class Kernel extends HttpKernel \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, LastSeen::class, - CreditsDisplayName::class + CreditsDisplayName::class, ], 'api' => [ @@ -70,6 +71,7 @@ class Kernel extends HttpKernel 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 'admin' => isAdmin::class, - 'api.token' => ApiAuthToken::class + 'api.token' => ApiAuthToken::class, + 'checkSuspended' => CheckSuspended::class ]; } diff --git a/app/Http/Middleware/CheckSuspended.php b/app/Http/Middleware/CheckSuspended.php new file mode 100644 index 00000000..59fcc614 --- /dev/null +++ b/app/Http/Middleware/CheckSuspended.php @@ -0,0 +1,28 @@ +check() && auth()->user()->isSuspended()) { + auth()->logout(); + + $message = 'Your account has been suspended. Please contact our support team!'; + + return redirect()->route('login')->withMessage($message); + } + return $next($request); + } +} diff --git a/app/Models/User.php b/app/Models/User.php index 6dc4efc8..9941be37 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -59,7 +59,8 @@ class User extends Authenticatable implements MustVerifyEmail 'password', 'pterodactyl_id', 'discord_verified_at', - 'avatar' + 'avatar', + 'suspended' ]; /** @@ -79,7 +80,7 @@ class User extends Authenticatable implements MustVerifyEmail */ protected $casts = [ 'email_verified_at' => 'datetime', - 'last_seen' => 'datetime', + 'last_seen' => 'datetime', ]; /** @@ -94,13 +95,13 @@ class User extends Authenticatable implements MustVerifyEmail }); static::deleting(function (User $user) { - $user->servers()->chunk(10 , function ($servers) { + $user->servers()->chunk(10, function ($servers) { foreach ($servers as $server) { $server->delete(); } }); - $user->payments()->chunk(10 , function ($payments) { + $user->payments()->chunk(10, function ($payments) { foreach ($payments as $payment) { $payment->delete(); } @@ -114,6 +115,38 @@ class User extends Authenticatable implements MustVerifyEmail }); } + /** + * @return HasMany + */ + public function servers() + { + return $this->hasMany(Server::class); + } + + /** + * @return HasMany + */ + public function payments() + { + return $this->hasMany(Payment::class); + } + + /** + * @return BelongsToMany + */ + public function vouchers() + { + return $this->belongsToMany(Voucher::class); + } + + /** + * @return HasOne + */ + public function discordUser() + { + return $this->hasOne(DiscordUser::class); + } + /** * */ @@ -130,10 +163,44 @@ class User extends Authenticatable implements MustVerifyEmail return number_format($this->credits, 2, '.', ''); } + /** + * @return bool + */ + public function isSuspended() + { + return $this->suspended; + } + + /** + * + * @throws Exception + */ + public function suspend() + { + $this->update([ + 'suspended' => true + ]); + + return $this; + } + + /** + * @throws Exception + */ + public function unSuspend() + { + $this->update([ + 'suspended' => false + ]); + + return $this; + } + /** * @return string */ - public function getAvatar(){ + public function getAvatar() + { return "https://www.gravatar.com/avatar/" . md5(strtolower(trim($this->email))); } @@ -144,7 +211,7 @@ class User extends Authenticatable implements MustVerifyEmail { $usage = 0; - foreach ($this->Servers as $server){ + foreach ($this->Servers as $server) { $usage += $server->product->price; } @@ -154,42 +221,13 @@ class User extends Authenticatable implements MustVerifyEmail /** * @return array|string|string[] */ - public function getVerifiedStatus(){ + public function getVerifiedStatus() + { $status = ''; if ($this->hasVerifiedEmail()) $status .= 'email '; if ($this->discordUser()->exists()) $status .= 'discord'; - $status = str_replace(' ' , '/' , $status); + $status = str_replace(' ', '/', $status); return $status; } - /** - * @return BelongsToMany - */ - public function vouchers(){ - return $this->belongsToMany(Voucher::class); - } - - /** - * @return HasOne - */ - public function discordUser(){ - return $this->hasOne(DiscordUser::class); - } - - /** - * @return HasMany - */ - public function servers() - { - return $this->hasMany(Server::class); - } - - /** - * @return HasMany - */ - public function payments() - { - return $this->hasMany(Payment::class); - } - } diff --git a/database/migrations/2021_09_26_150114_add_suspended_to_users_table.php b/database/migrations/2021_09_26_150114_add_suspended_to_users_table.php new file mode 100644 index 00000000..f3b83a55 --- /dev/null +++ b/database/migrations/2021_09_26_150114_add_suspended_to_users_table.php @@ -0,0 +1,32 @@ +boolean('suspended')->default(false); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('suspended'); + }); + } +} diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php index 420d1b85..b2f4eba6 100644 --- a/resources/views/auth/login.blade.php +++ b/resources/views/auth/login.blade.php @@ -11,6 +11,10 @@
+ @if (session('message')) +
{{ session('message') }}
+ @endif + @csrf @if(Session::has('error')) diff --git a/routes/web.php b/routes/web.php index 2fad20da..33bdf1df 100644 --- a/routes/web.php +++ b/routes/web.php @@ -40,7 +40,7 @@ Route::middleware('guest')->get('/', function () { Auth::routes(['verify' => true]); -Route::middleware('auth')->group(function () { +Route::middleware(['auth', 'checkSuspended'])->group(function () { #resend verification email Route::get('/email/verification-notification', function (Request $request) { $request->user()->sendEmailVerificationNotification(); @@ -79,6 +79,7 @@ Route::middleware('auth')->group(function () { 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'); + Route::post('users/togglesuspend/{user}', [UserController::class, 'toggleSuspended'])->name('users.togglesuspend'); Route::resource('users', UserController::class); Route::get('servers/datatable', [AdminServerController::class, 'datatable'])->name('servers.datatable'); From 82006f24af15cc506cbc93a8b97e84b0d2f3ffc3 Mon Sep 17 00:00:00 2001 From: Dennis Date: Mon, 27 Sep 2021 09:48:18 +0200 Subject: [PATCH 15/66] Added re-sync Discord and Discord Card to Profile --- resources/views/profile/index.blade.php | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/resources/views/profile/index.blade.php b/resources/views/profile/index.blade.php index 88a6c0b5..97e5a3b1 100644 --- a/resources/views/profile/index.blade.php +++ b/resources/views/profile/index.blade.php @@ -145,7 +145,7 @@
+ placeholder="••••••"> @error('current_password')
@@ -159,7 +159,7 @@
+ name="new_password" type="password" placeholder="••••••"> @error('new_password')
@@ -176,7 +176,7 @@ + placeholder="••••••"> @error('new_password_confirmation')
@@ -213,6 +213,23 @@

You are verified!

+
+
+
+
+

{{$user->discordUser->username}} {{$user->discordUser->locale}}

+

{{$user->discordUser->id}} +

+
+
avatar
+
+ +
+
@endif
From 2ece3591405304048fb298e9ef5e95a0923df5db Mon Sep 17 00:00:00 2001 From: Dennis Date: Mon, 27 Sep 2021 10:11:13 +0200 Subject: [PATCH 16/66] fixed placeholders --- resources/views/profile/index.blade.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/views/profile/index.blade.php b/resources/views/profile/index.blade.php index 97e5a3b1..15b52438 100644 --- a/resources/views/profile/index.blade.php +++ b/resources/views/profile/index.blade.php @@ -145,7 +145,7 @@
+ placeholder="••••••"> @error('current_password')
@@ -159,7 +159,7 @@
+ name="new_password" type="password" placeholder="••••••"> @error('new_password')
@@ -176,7 +176,7 @@ + placeholder="••••••"> @error('new_password_confirmation')
From 20e14bb3e78918787b32a2184da6e9512f16e835 Mon Sep 17 00:00:00 2001 From: Dennis Date: Mon, 27 Sep 2021 10:12:13 +0200 Subject: [PATCH 17/66] Fixed Spacing --- resources/views/profile/index.blade.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/views/profile/index.blade.php b/resources/views/profile/index.blade.php index 15b52438..75f2d1a0 100644 --- a/resources/views/profile/index.blade.php +++ b/resources/views/profile/index.blade.php @@ -223,10 +223,10 @@
avatar
-
From 2d21d2d2ca7242e2868844dd78e4f02c89523e1b Mon Sep 17 00:00:00 2001 From: Dennis Date: Mon, 27 Sep 2021 15:32:27 +0200 Subject: [PATCH 18/66] Added better Logs --- .../views/admin/activitylogs/index.blade.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/resources/views/admin/activitylogs/index.blade.php b/resources/views/admin/activitylogs/index.blade.php index e3cc7946..978e8c9c 100644 --- a/resources/views/admin/activitylogs/index.blade.php +++ b/resources/views/admin/activitylogs/index.blade.php @@ -71,7 +71,10 @@ @foreach($logs as $log) - {{$log->causer ? json_decode($log->causer)->name : 'system'}} + @if($log->causer) {{json_decode($log->causer)->name}} + @else + System + @endif @switch($log->description) @@ -90,6 +93,18 @@ @endswitch {{ucfirst($log->description)}} {{ explode("\\" , $log->subject_type)[2]}} + @php $first=true @endphp + @foreach(json_decode($log->properties, true) as $properties) + @if($first) + @if(isset($properties['name'])) + " {{$properties['name']}} " + @endif + @if(isset($properties['email'])) + < {{$properties['email']}} > + @endif + @php $first=false @endphp + @endif + @endforeach From 8bdeed08af3010e42075c71866754b95e75dc50c Mon Sep 17 00:00:00 2001 From: Dennis Date: Mon, 27 Sep 2021 17:21:17 +0200 Subject: [PATCH 19/66] Added "ran out of Credits" --- resources/views/home.blade.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index 424cd48b..3be09b1a 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -67,7 +67,6 @@
- @if($useage > 0)
@if(number_format((Auth::user()->Credits()*30)/$useage,0,'.','') >= 15) @@ -82,7 +81,11 @@
Out of {{CREDITS_DISPLAY_NAME}} in @if(number_format((Auth::user()->Credits()*30)/$useage,2,'.','') < "1") - {{number_format(Auth::user()->Credits()/($useage/30/24),0,'.','')}} hours + @if(number_format(Auth::user()->Credits()/($useage/30/24),0,'.','') < "1") + You ran out of Credits + @else + {{number_format(Auth::user()->Credits()/($useage/30/24),0,'.','')}} hours + @endif @else {{number_format((Auth::user()->Credits()*30)/$useage,0,'.','')}} days @endif @@ -92,7 +95,6 @@
- @endif
From e708e2fc24df494eeffa495c7a7055f23d1dbd45 Mon Sep 17 00:00:00 2001 From: Dennis Date: Mon, 27 Sep 2021 18:42:55 +0200 Subject: [PATCH 20/66] Update home.blade.php This will add the "Out of credits in..." Box when you have and never had Credits. It will show the box and the text "You ran out of Credits" if you purchased Credits and your servers got Suspended --- resources/views/home.blade.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index 3be09b1a..50b2d0db 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -65,8 +65,9 @@
- + + @if(Auth::user()->Credits() > 0.01 and $useage > 0)
@if(number_format((Auth::user()->Credits()*30)/$useage,0,'.','') >= 15) @@ -81,7 +82,7 @@
Out of {{CREDITS_DISPLAY_NAME}} in @if(number_format((Auth::user()->Credits()*30)/$useage,2,'.','') < "1") - @if(number_format(Auth::user()->Credits()/($useage/30/24),0,'.','') < "1") + @if(number_format(Auth::user()->Credits()/($useage/30/24),2,'.','') < "1") You ran out of Credits @else {{number_format(Auth::user()->Credits()/($useage/30/24),0,'.','')}} hours @@ -95,10 +96,11 @@
- + @endif
+
From b1ca573dd16aceb06cbd37cefd0865da02c586fa Mon Sep 17 00:00:00 2001 From: Johannes Date: Mon, 27 Sep 2021 18:43:07 +0200 Subject: [PATCH 21/66] User server gets suspended / unsuspended if an user accounts get suspended / unsuspended --- app/Models/User.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/Models/User.php b/app/Models/User.php index 9941be37..83fd71bb 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -177,6 +177,10 @@ class User extends Authenticatable implements MustVerifyEmail */ public function suspend() { + foreach ($this->servers as $server){ + $server->suspend(); + } + $this->update([ 'suspended' => true ]); @@ -189,6 +193,12 @@ class User extends Authenticatable implements MustVerifyEmail */ public function unSuspend() { + foreach ($this->servers as $server){ + if ($this->credits >= $server->product->getHourlyPrice()) { + $server->unSuspend(); + } + } + $this->update([ 'suspended' => false ]); From 241014134faa582fd037a5edba92ef0d901268b0 Mon Sep 17 00:00:00 2001 From: Johannes Date: Mon, 27 Sep 2021 20:27:06 +0200 Subject: [PATCH 22/66] Fix formatting --- app/Models/User.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/Models/User.php b/app/Models/User.php index 83fd71bb..33501ba0 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -177,7 +177,7 @@ class User extends Authenticatable implements MustVerifyEmail */ public function suspend() { - foreach ($this->servers as $server){ + foreach ($this->servers as $server) { $server->suspend(); } @@ -193,10 +193,10 @@ class User extends Authenticatable implements MustVerifyEmail */ public function unSuspend() { - foreach ($this->servers as $server){ - if ($this->credits >= $server->product->getHourlyPrice()) { - $server->unSuspend(); - } + foreach ($this->servers as $server) { + if ($this->credits >= $server->product->getHourlyPrice()) { + $server->unSuspend(); + } } $this->update([ From 28af0c053009682e2431deaf118f69eee0391bcb Mon Sep 17 00:00:00 2001 From: Jovan Jovanovic Date: Fri, 1 Oct 2021 23:21:49 +0200 Subject: [PATCH 23/66] Add minimal credits per product --- .../Controllers/Admin/ProductController.php | 14 +- app/Http/Controllers/ServerController.php | 30 ++- app/Models/Product.php | 8 +- ..._01_200844_add_product_minimum_credits.php | 32 +++ .../views/admin/products/create.blade.php | 185 +++++++++-------- resources/views/admin/products/edit.blade.php | 190 +++++++++--------- resources/views/admin/products/show.blade.php | 113 ++++++----- resources/views/servers/create.blade.php | 83 ++++---- 8 files changed, 376 insertions(+), 279 deletions(-) create mode 100644 database/migrations/2021_10_01_200844_add_product_minimum_credits.php diff --git a/app/Http/Controllers/Admin/ProductController.php b/app/Http/Controllers/Admin/ProductController.php index 97407644..ffa6856b 100644 --- a/app/Http/Controllers/Admin/ProductController.php +++ b/app/Http/Controllers/Admin/ProductController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; +use App\Models\Configuration; use App\Models\Product; use Exception; use Illuminate\Contracts\Foundation\Application; @@ -51,6 +52,7 @@ class ProductController extends Controller "swap" => "required|numeric|max:1000000|min:0", "description" => "required|string|max:191", "disk" => "required|numeric|max:1000000|min:5", + "minimum_credits" => "required|numeric|max:1000000|min:-1", "io" => "required|numeric|max:1000000|min:0", "databases" => "required|numeric|max:1000000|min:0", "backups" => "required|numeric|max:1000000|min:0", @@ -73,7 +75,8 @@ class ProductController extends Controller public function show(Product $product) { return view('admin.products.show', [ - 'product' => $product + 'product' => $product, + 'minimum_credits' => Configuration::getValueByKey("MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER"), ]); } @@ -108,6 +111,7 @@ class ProductController extends Controller "description" => "required|string|max:191", "disk" => "required|numeric|max:1000000|min:5", "io" => "required|numeric|max:1000000|min:0", + "minimum_credits" => "required|numeric|max:1000000|min:-1", "databases" => "required|numeric|max:1000000|min:0", "backups" => "required|numeric|max:1000000|min:0", "allocations" => "required|numeric|max:1000000|min:0", @@ -125,7 +129,8 @@ class ProductController extends Controller * @param Product $product * @return RedirectResponse */ - public function disable(Request $request, Product $product) { + public function disable(Request $request, Product $product) + { $product->update(['disabled' => !$product->disabled]); return redirect()->route('admin.products.index')->with('success', 'product has been updated!'); @@ -181,12 +186,11 @@ class ProductController extends Controller ' . csrf_field() . ' ' . method_field("PATCH") . '
- - + +
'; - }) ->editColumn('created_at', function (Product $product) { return $product->created_at ? $product->created_at->diffForHumans() : ''; diff --git a/app/Http/Controllers/ServerController.php b/app/Http/Controllers/ServerController.php index f916c52c..2709c3a3 100644 --- a/app/Http/Controllers/ServerController.php +++ b/app/Http/Controllers/ServerController.php @@ -16,7 +16,7 @@ use Illuminate\Http\Client\Response; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; - +use Illuminate\Support\Facades\Request as FacadesRequest; class ServerController extends Controller { @@ -39,6 +39,7 @@ class ServerController extends Controller $query->where('disabled', '=', false); })->get(), 'nests' => Nest::where('disabled', '=', false)->get(), + 'minimum_credits' => Configuration::getValueByKey('MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER', 50) ]); } @@ -52,7 +53,7 @@ class ServerController extends Controller "description" => "nullable|max:191", "node_id" => "required|exists:nodes,id", "egg_id" => "required|exists:eggs,id", - "product_id" => "required|exists:products,id", + "product_id" => "required|exists:products,id" ]); //get required resources @@ -74,8 +75,8 @@ class ServerController extends Controller 'identifier' => $response->json()['attributes']['identifier'] ]); - if (Configuration::getValueByKey('SERVER_CREATE_CHARGE_FIRST_HOUR' , 'true') == 'true'){ - if (Auth::user()->credits >= $server->product->getHourlyPrice()){ + if (Configuration::getValueByKey('SERVER_CREATE_CHARGE_FIRST_HOUR', 'true') == 'true') { + if (Auth::user()->credits >= $server->product->getHourlyPrice()) { Auth::user()->decrement('credits', $server->product->getHourlyPrice()); } } @@ -86,15 +87,26 @@ class ServerController extends Controller /** * @return null|RedirectResponse */ - private function validateConfigurationRules(){ + private function validateConfigurationRules() + { //limit validation if (Auth::user()->servers()->count() >= Auth::user()->server_limit) { return redirect()->route('servers.index')->with('error', 'Server limit reached!'); } - //minimum credits - if (Auth::user()->credits <= Configuration::getValueByKey('MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER', 50)) { - return redirect()->route('servers.index')->with('error', "You do not have the required amount of ".CREDITS_DISPLAY_NAME." to create a new server!"); + // minimum credits + if (FacadesRequest::has("product_id")) { + $product = Product::findOrFail(FacadesRequest::input("product_id")); + if ( + Auth::user()->credits <= + ($product->minimum_credits == -1 + ? Configuration::getValueByKey('MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER', 50) + : $product->minimum_credits) + ) { + return redirect()->route('servers.index')->with('error', "You do not have the required amount of " . CREDITS_DISPLAY_NAME . " to create a new server!"); + } + } else if (Auth::user()->credits <= Configuration::getValueByKey('MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER', 50)) { + return redirect()->route('servers.index')->with('error', "You do not have the required amount of " . CREDITS_DISPLAY_NAME . " to create a new server!"); } //Required Verification for creating an server @@ -141,7 +153,7 @@ class ServerController extends Controller * @param Server $server * @return RedirectResponse */ - private function serverCreationFailed(Response $response , Server $server) + private function serverCreationFailed(Response $response, Server $server) { $server->delete(); diff --git a/app/Models/Product.php b/app/Models/Product.php index 68dc8f74..f1725da3 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -6,7 +6,6 @@ use Hidehalo\Nanoid\Client; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; -use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Spatie\Activitylog\Traits\LogsActivity; class Product extends Model @@ -17,10 +16,11 @@ class Product extends Model protected $guarded = ['id']; - public static function boot() { + public static function boot() + { parent::boot(); - static::creating(function(Product $product) { + static::creating(function (Product $product) { $client = new Client(); $product->{$product->getKeyName()} = $client->generateId($size = 21); @@ -47,6 +47,6 @@ class Product extends Model */ public function servers(): BelongsTo { - return $this->belongsTo(Server::class , 'id' , 'product_id'); + return $this->belongsTo(Server::class, 'id', 'product_id'); } } diff --git a/database/migrations/2021_10_01_200844_add_product_minimum_credits.php b/database/migrations/2021_10_01_200844_add_product_minimum_credits.php new file mode 100644 index 00000000..162b52e8 --- /dev/null +++ b/database/migrations/2021_10_01_200844_add_product_minimum_credits.php @@ -0,0 +1,32 @@ +float('minimum_credits')->default(-1); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('products', function (Blueprint $table) { + $table->dropColumn('minimum_credits'); + }); + } +} diff --git a/resources/views/admin/products/create.blade.php b/resources/views/admin/products/create.blade.php index 96935a55..b7d43aad 100644 --- a/resources/views/admin/products/create.blade.php +++ b/resources/views/admin/products/create.blade.php @@ -10,9 +10,10 @@
@@ -29,12 +30,16 @@
-
+ @csrf
- - + +
@@ -42,78 +47,75 @@
- + @error('name') -
- {{$message}} -
+
+ {{ $message }} +
@enderror
- - + + @error('price') -
- {{$message}} -
+
+ {{ $message }} +
@enderror
+
- + @error('memory') -
- {{$message}} -
+
+ {{ $message }} +
@enderror
- + @error('cpu') -
- {{$message}} -
+
+ {{ $message }} +
@enderror
- + @error('swap') -
- {{$message}} -
+
+ {{ $message }} +
@enderror
- - + + @error('description') -
- {{$message}} -
+
+ {{ $message }} +
@enderror
@@ -121,65 +123,74 @@
- + @error('disk') -
- {{$message}} -
+
+ {{ $message }} +
@enderror
+ +
+ + + @error('minimum_credits') +
+ {{ $message }} +
+ @enderror +
+
- + @error('io') -
- {{$message}} -
+
+ {{ $message }} +
@enderror
- + @error('databases') -
- {{$message}} -
+
+ {{ $message }} +
@enderror
- + @error('backups') -
- {{$message}} -
+
+ {{ $message }} +
@enderror
- + @error('allocations') -
- {{$message}} -
+
+ {{ $message }} +
@enderror
diff --git a/resources/views/admin/products/edit.blade.php b/resources/views/admin/products/edit.blade.php index 5b9b1a3f..ae04d739 100644 --- a/resources/views/admin/products/edit.blade.php +++ b/resources/views/admin/products/edit.blade.php @@ -10,9 +10,10 @@
@@ -29,22 +30,28 @@
- @if($product->servers()->count() > 0) + @if ($product->servers()->count() > 0)
-

Editing the resource options will not automatically update the servers on pterodactyl's side!

-

Automatically updating resource options on pterodactyl side is on my todo list :)

+

Editing the resource options will not automatically update the servers on pterodactyl's + side!

+

Automatically updating resource options on pterodactyl side is on my + todo list :)

@endif
- + @csrf @method('PATCH')
- disabled) checked @endif name="disabled" class="custom-control-input custom-control-input-danger" id="switch1"> - + disabled) checked @endif name="disabled" + class="custom-control-input custom-control-input-danger" id="switch1"> +
@@ -52,78 +59,74 @@
- + @error('name') -
- {{$message}} -
+
+ {{ $message }} +
@enderror
- - + + @error('price') -
- {{$message}} -
+
+ {{ $message }} +
@enderror
- + @error('memory') -
- {{$message}} -
+
+ {{ $message }} +
@enderror
- + @error('cpu') -
- {{$message}} -
+
+ {{ $message }} +
@enderror
- + @error('swap') -
- {{$message}} -
+
+ {{ $message }} +
@enderror
- - + + @error('description') -
- {{$message}} -
+
+ {{ $message }} +
@enderror
@@ -131,65 +134,72 @@
- + @error('disk') -
- {{$message}} -
+
+ {{ $message }} +
+ @enderror +
+
+ + + @error('minimum_credits') +
+ {{ $message }} +
@enderror
- + @error('io') -
- {{$message}} -
+
+ {{ $message }} +
@enderror
- + @error('databases') -
- {{$message}} -
+
+ {{ $message }} +
@enderror
- + @error('backups') -
- {{$message}} -
+
+ {{ $message }} +
@enderror
- + @error('allocations') -
- {{$message}} -
+
+ {{ $message }} +
@enderror
diff --git a/resources/views/admin/products/show.blade.php b/resources/views/admin/products/show.blade.php index 46d13b5d..62e6ed79 100644 --- a/resources/views/admin/products/show.blade.php +++ b/resources/views/admin/products/show.blade.php @@ -10,10 +10,10 @@
@@ -30,11 +30,15 @@
Product
- - + + {{ csrf_field() }} - {{ method_field("DELETE") }} - + {{ method_field('DELETE') }} +
@@ -47,9 +51,9 @@
- - {{$product->id}} - + + {{ $product->id }} +
@@ -60,9 +64,9 @@
- - {{$product->name}} - + + {{ $product->name }} +
@@ -73,9 +77,26 @@
- - {{$product->price}} - + + {{ $product->price }} + +
+
+
+ +
+
+
+ +
+
+ + @if ($product->minimum_credits == -1) + {{ $minimum_credits }} + @else + {{ $product->minimum_credits }} + @endif +
@@ -87,9 +108,9 @@
- - {{$product->memory}} - + + {{ $product->memory }} +
@@ -100,9 +121,9 @@
- - {{$product->cpu}} - + + {{ $product->cpu }} +
@@ -113,9 +134,9 @@
- - {{$product->swap}} - + + {{ $product->swap }} +
@@ -126,9 +147,9 @@
- - {{$product->disk}} - + + {{ $product->disk }} +
@@ -139,9 +160,9 @@
- - {{$product->io}} - + + {{ $product->io }} +
@@ -152,9 +173,9 @@
- - {{$product->databases}} - + + {{ $product->databases }} +
@@ -165,9 +186,9 @@
- - {{$product->allocations}} - + + {{ $product->allocations }} +
@@ -178,9 +199,9 @@
- - {{$product->created_at ? $product->created_at->diffForHumans() : ''}} - + + {{ $product->created_at ? $product->created_at->diffForHumans() : '' }} +
@@ -192,9 +213,9 @@
- - {{$product->description}} - + + {{ $product->description }} +
@@ -206,9 +227,9 @@
- - {{$product->updated_at ? $product->updated_at->diffForHumans() : ''}} - + + {{ $product->updated_at ? $product->updated_at->diffForHumans() : '' }} +
diff --git a/resources/views/servers/create.blade.php b/resources/views/servers/create.blade.php index 2427a46a..e2918267 100644 --- a/resources/views/servers/create.blade.php +++ b/resources/views/servers/create.blade.php @@ -10,9 +10,10 @@ @@ -32,29 +33,29 @@
Create Server
-
+ @csrf
+ class="form-control @error('name') is-invalid @enderror"> @error('name') -
- Please fill out this field. -
+
+ Please fill out this field. +
@enderror
+ class="form-control @error('description') is-invalid @enderror"> @error('description') -
- Please fill out this field. -
+
+ Please fill out this field. +
@enderror
@@ -63,13 +64,13 @@
- @foreach($nests as $nest) - - @foreach($nest->eggs as $egg) - + class="custom-select @error('egg_id') is-invalid @enderror"> + @foreach ($nests as $nest) + + @foreach ($nest->eggs as $egg) + @endforeach @endforeach @@ -100,32 +101,38 @@
@error('egg_id') -
- Please fill out this field. -
+
+ Please fill out this field. +
@enderror
@error('product_id') -
- Please fill out this field. -
+
+ Please fill out this field. +
@enderror
-
From 76d7710d0ec617b805ae9ca38d5cf8c9ffe75175 Mon Sep 17 00:00:00 2001 From: Jovan Jovanovic Date: Sat, 2 Oct 2021 18:29:32 +0200 Subject: [PATCH 24/66] Add form data casts for numbers --- app/Models/User.php | 3 ++- app/Models/Voucher.php | 15 +++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/Models/User.php b/app/Models/User.php index 33501ba0..d7c072da 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -81,6 +81,8 @@ class User extends Authenticatable implements MustVerifyEmail protected $casts = [ 'email_verified_at' => 'datetime', 'last_seen' => 'datetime', + 'credits' => 'float', + 'server_limit' => 'float', ]; /** @@ -239,5 +241,4 @@ class User extends Authenticatable implements MustVerifyEmail $status = str_replace(' ', '/', $status); return $status; } - } diff --git a/app/Models/Voucher.php b/app/Models/Voucher.php index bff3e215..81fe635a 100644 --- a/app/Models/Voucher.php +++ b/app/Models/Voucher.php @@ -31,7 +31,17 @@ class Voucher extends Model 'expires_at' ]; - protected $appends = ['used' , 'status']; + /** + * The attributes that should be cast to native types. + * + * @var array + */ + protected $casts = [ + 'credits' => 'float', + 'uses' => 'integer' + ]; + + protected $appends = ['used', 'status']; /** * @return int @@ -44,7 +54,8 @@ class Voucher extends Model /** * @return string */ - public function getStatusAttribute(){ + public function getStatusAttribute() + { return $this->getStatus(); } From 6be22c0eeaabd4ab43d08ca17a2de9fbf8d850d6 Mon Sep 17 00:00:00 2001 From: Jovan Jovanovic Date: Sun, 3 Oct 2021 00:55:10 +0200 Subject: [PATCH 25/66] Add voucher users --- .../Controllers/Admin/VoucherController.php | 30 ++- resources/views/admin/vouchers/show.blade.php | 240 ------------------ .../views/admin/vouchers/users.blade.php | 93 +++++++ routes/web.php | 2 + 4 files changed, 123 insertions(+), 242 deletions(-) delete mode 100644 resources/views/admin/vouchers/show.blade.php create mode 100644 resources/views/admin/vouchers/users.blade.php diff --git a/app/Http/Controllers/Admin/VoucherController.php b/app/Http/Controllers/Admin/VoucherController.php index 1aa2c59e..31947dbd 100644 --- a/app/Http/Controllers/Admin/VoucherController.php +++ b/app/Http/Controllers/Admin/VoucherController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers\Admin; use App\Events\UserUpdateCreditsEvent; use App\Http\Controllers\Controller; +use App\Models\User; use App\Models\Voucher; use Illuminate\Contracts\Foundation\Application; use Illuminate\Contracts\View\Factory; @@ -115,6 +116,13 @@ class VoucherController extends Controller return redirect()->back()->with('success', 'voucher has been removed!'); } + public function users(Voucher $voucher) + { + return view('admin.vouchers.users', [ + 'voucher' => $voucher + ]); + } + /** * @param Request $request * @return JsonResponse @@ -144,7 +152,7 @@ class VoucherController extends Controller ]); if ($request->user()->credits + $voucher->credits >= 99999999) throw ValidationException::withMessages([ - 'code' => "You can't redeem this voucher because you would exceed the ".CREDITS_DISPLAY_NAME." limit" + 'code' => "You can't redeem this voucher because you would exceed the " . CREDITS_DISPLAY_NAME . " limit" ]); #redeem voucher @@ -153,10 +161,27 @@ class VoucherController extends Controller event(new UserUpdateCreditsEvent($request->user())); return response()->json([ - 'success' => "{$voucher->credits} ".CREDITS_DISPLAY_NAME." have been added to your balance!" + 'success' => "{$voucher->credits} " . CREDITS_DISPLAY_NAME . " have been added to your balance!" ]); } + public function usersDataTable(Voucher $voucher) + { + $users = $voucher->users(); + + return datatables($users) + ->editColumn('name', function (User $user) { + return '' . $user->name . ''; + }) + ->addColumn('credits', function (User $user) { + return ' ' . $user->credits(); + }) + ->addColumn('last_seen', function (User $user) { + return $user->last_seen ? $user->last_seen->diffForHumans() : ''; + }) + ->rawColumns(['name', 'credits', 'last_seen']) + ->make(); + } public function dataTable() { $query = Voucher::query(); @@ -164,6 +189,7 @@ class VoucherController extends Controller return datatables($query) ->addColumn('actions', function (Voucher $voucher) { return ' +
diff --git a/resources/views/admin/vouchers/show.blade.php b/resources/views/admin/vouchers/show.blade.php deleted file mode 100644 index 46d13b5d..00000000 --- a/resources/views/admin/vouchers/show.blade.php +++ /dev/null @@ -1,240 +0,0 @@ -@extends('layouts.main') - -@section('content') - -
-
-
-
-

Products

-
-
- -
-
-
-
- - - -
-
- -
-
-
Product
-
- - - {{ csrf_field() }} - {{ method_field("DELETE") }} - - -
-
-
-
- -
-
-
- -
-
- - {{$product->id}} - -
-
-
- -
-
-
- -
-
- - {{$product->name}} - -
-
-
- -
-
-
- -
-
- - {{$product->price}} - -
-
-
- - -
-
-
- -
-
- - {{$product->memory}} - -
-
-
- -
-
-
- -
-
- - {{$product->cpu}} - -
-
-
- -
-
-
- -
-
- - {{$product->swap}} - -
-
-
- -
-
-
- -
-
- - {{$product->disk}} - -
-
-
- -
-
-
- -
-
- - {{$product->io}} - -
-
-
- -
-
-
- -
-
- - {{$product->databases}} - -
-
-
- -
-
-
- -
-
- - {{$product->allocations}} - -
-
-
- -
-
-
- -
-
- - {{$product->created_at ? $product->created_at->diffForHumans() : ''}} - -
-
-
- - -
-
-
- -
-
- - {{$product->description}} - -
-
-
- - -
-
-
- -
-
- - {{$product->updated_at ? $product->updated_at->diffForHumans() : ''}} - -
-
-
- -
-
-
- -
-
-
Servers
-
-
- - @include('admin.servers.table' , ['filter' => '?product=' . $product->id]) - -
-
- - -
- - -
- - - - -@endsection diff --git a/resources/views/admin/vouchers/users.blade.php b/resources/views/admin/vouchers/users.blade.php new file mode 100644 index 00000000..bb5ed322 --- /dev/null +++ b/resources/views/admin/vouchers/users.blade.php @@ -0,0 +1,93 @@ +@extends('layouts.main') + +@section('content') + +
+
+
+
+

Vouchers

+
+
+ +
+
+
+
+ + + +
+
+ +
+ +
+
+
Users
+
+
+ +
+ + + + + + + + + + + + + +
IDNameEmail{{ CREDITS_DISPLAY_NAME }}Last Seen
+ +
+
+ + +
+ + +
+ + + + + + +@endsection diff --git a/routes/web.php b/routes/web.php index 33bdf1df..ae1fa78a 100644 --- a/routes/web.php +++ b/routes/web.php @@ -119,6 +119,8 @@ Route::middleware(['auth', 'checkSuspended'])->group(function () { Route::resource('usefullinks', UsefulLinkController::class); Route::get('vouchers/datatable', [VoucherController::class, 'datatable'])->name('vouchers.datatable'); + Route::get('vouchers/{voucher}/usersdatatable', [VoucherController::class, 'usersdatatable'])->name('vouchers.usersdatatable'); + Route::get('vouchers/{voucher}/users', [VoucherController::class, 'users'])->name('vouchers.users'); Route::resource('vouchers', VoucherController::class); Route::get('api/datatable', [ApplicationApiController::class, 'datatable'])->name('api.datatable'); From 7d229ec25bb8bdd1a259636d239945370fb5d15f Mon Sep 17 00:00:00 2001 From: Jovan Jovanovic Date: Sun, 3 Oct 2021 14:47:51 +0200 Subject: [PATCH 26/66] Remove the global check for minimum required credits --- app/Http/Controllers/ServerController.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/Http/Controllers/ServerController.php b/app/Http/Controllers/ServerController.php index 2709c3a3..84749ab6 100644 --- a/app/Http/Controllers/ServerController.php +++ b/app/Http/Controllers/ServerController.php @@ -103,10 +103,8 @@ class ServerController extends Controller ? Configuration::getValueByKey('MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER', 50) : $product->minimum_credits) ) { - return redirect()->route('servers.index')->with('error', "You do not have the required amount of " . CREDITS_DISPLAY_NAME . " to create a new server!"); + return redirect()->route('servers.index')->with('error', "You do not have the required amount of " . CREDITS_DISPLAY_NAME . " to use this product!"); } - } else if (Auth::user()->credits <= Configuration::getValueByKey('MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER', 50)) { - return redirect()->route('servers.index')->with('error', "You do not have the required amount of " . CREDITS_DISPLAY_NAME . " to create a new server!"); } //Required Verification for creating an server From 4d3c6c7a13049f2d7f8db9ffb1e267f347eb666b Mon Sep 17 00:00:00 2001 From: Jovan Jovanovic Date: Sun, 3 Oct 2021 15:18:08 +0200 Subject: [PATCH 27/66] Fix select if using global limit --- app/Http/Controllers/ServerController.php | 3 ++- resources/views/servers/create.blade.php | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/ServerController.php b/app/Http/Controllers/ServerController.php index 84749ab6..d1c260cd 100644 --- a/app/Http/Controllers/ServerController.php +++ b/app/Http/Controllers/ServerController.php @@ -16,6 +16,7 @@ use Illuminate\Http\Client\Response; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Request as FacadesRequest; class ServerController extends Controller @@ -98,7 +99,7 @@ class ServerController extends Controller if (FacadesRequest::has("product_id")) { $product = Product::findOrFail(FacadesRequest::input("product_id")); if ( - Auth::user()->credits <= + Auth::user()->credits < ($product->minimum_credits == -1 ? Configuration::getValueByKey('MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER', 50) : $product->minimum_credits) diff --git a/resources/views/servers/create.blade.php b/resources/views/servers/create.blade.php index e2918267..50e3d1a5 100644 --- a/resources/views/servers/create.blade.php +++ b/resources/views/servers/create.blade.php @@ -113,7 +113,8 @@ class="custom-select @error('product_id') is-invalid @enderror"> @foreach ($products as $product)