From 696ce64df3bd334bc8db9d1df28eea7aed668b69 Mon Sep 17 00:00:00 2001 From: Hiekki <72362116+Hiekki4@users.noreply.github.com> Date: Tue, 27 Jul 2021 09:15:10 +0100 Subject: [PATCH 1/4] [WIP] increment --- app/Http/Controllers/Api/UserController.php | 22 +++++++++++++-------- routes/api.php | 2 +- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/app/Http/Controllers/Api/UserController.php b/app/Http/Controllers/Api/UserController.php index 55c2c595..6946f7e3 100644 --- a/app/Http/Controllers/Api/UserController.php +++ b/app/Http/Controllers/Api/UserController.php @@ -64,26 +64,32 @@ class UserController extends Controller } /** - * Give credits to a user. + * * * @param Request $request * @param int $id * @return User */ - public function addCredits(Request $request, int $id) + public function increment(Request $request, int $id) { $discordUser = DiscordUser::find($id); $user = $discordUser ? $discordUser->user : User::findOrFail($id); $request->validate([ - "credits" => "required|numeric|min:0|max:1000000", - ]); - - if ($user->credits + $request->credits >= 99999999) throw ValidationException::withMessages([ - 'credits' => "You can't add this amount of credits because you would exceed the credit limit" + "credits" => "sometimes|numeric|min:0|max:1000000", + "server_limit" => "sometimes|numeric|min:0|max:1000000", ]); - $user->increment('credits', $request->credits); + if($request->credits){ + if ($user->credits + $request->credits >= 99999999) throw ValidationException::withMessages([ + 'credits' => "You can't add this amount of credits because you would exceed the credit limit" + ]); + $user->increment('credits', $request->credits); + } + + if($request->server_limit){ + $user->increment('server_limit', $request->server_limit); + } return $user; } diff --git a/routes/api.php b/routes/api.php index 3f475be8..7a1f8dae 100644 --- a/routes/api.php +++ b/routes/api.php @@ -17,7 +17,7 @@ use Illuminate\Support\Facades\Route; */ Route::middleware('api.token')->group(function () { - Route::patch('/users/{user}/addcredits', [UserController::class, 'addCredits']); + Route::patch('/users/{user}/increment', [UserController::class, 'increment']); Route::resource('users', UserController::class)->except(['store', 'create']); Route::patch('/servers/{server}/suspend', [ServerController::class, 'suspend']); From b12007aea318a9ff831fa0a25b75bed9b12b5bac Mon Sep 17 00:00:00 2001 From: Hiekki <72362116+Hiekki4@users.noreply.github.com> Date: Tue, 27 Jul 2021 13:20:31 +0100 Subject: [PATCH 2/4] decrement and increment endpoints --- app/Http/Controllers/Api/UserController.php | 39 ++++++++++++++++++++- routes/api.php | 1 + 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Api/UserController.php b/app/Http/Controllers/Api/UserController.php index 6946f7e3..702be6c3 100644 --- a/app/Http/Controllers/Api/UserController.php +++ b/app/Http/Controllers/Api/UserController.php @@ -64,8 +64,8 @@ class UserController extends Controller } /** + * increments the users credits or/and server_limit * - * * @param Request $request * @param int $id * @return User @@ -88,12 +88,49 @@ class UserController extends Controller } if($request->server_limit){ + if ($user->server_limit + $request->server_limit >= 2147483647) throw ValidationException::withMessages([ + 'server_limit' => "You cannot add this amount of servers because it would exceed the server limit." + ]); $user->increment('server_limit', $request->server_limit); } return $user; } + /** + * decrements the users credits or/and server_limit + * + * @param Request $request + * @param int $id + * @return User + */ + public function decrement(Request $request, int $id) + { + $discordUser = DiscordUser::find($id); + $user = $discordUser ? $discordUser->user : User::findOrFail($id); + + $request->validate([ + "credits" => "sometimes|numeric|min:0|max:1000000", + "server_limit" => "sometimes|numeric|min:0|max:1000000", + ]); + + if($request->credits){ + if ($user->credits - $request->credits >= 99999999) throw ValidationException::withMessages([ + 'credits' => "You cannot remove this amount of credits because you would exceed the minimum credit" + ]); + $user->decrement('credits', $request->credits); + } + + if($request->server_limit){ + if ($user->server_limit - $request->server_limit >= 2147483647) throw ValidationException::withMessages([ + 'server_limit' => "You cannot remove this amount of servers because it would exceed the minimum server." + ]); + $user->decrement('server_limit', $request->server_limit); + } + + return $user; + } + /** * Remove the specified resource from storage. * diff --git a/routes/api.php b/routes/api.php index 7a1f8dae..3c5f1fb9 100644 --- a/routes/api.php +++ b/routes/api.php @@ -18,6 +18,7 @@ use Illuminate\Support\Facades\Route; Route::middleware('api.token')->group(function () { Route::patch('/users/{user}/increment', [UserController::class, 'increment']); + Route::patch('/users/{user}/decrement', [UserController::class, 'decrement']); Route::resource('users', UserController::class)->except(['store', 'create']); Route::patch('/servers/{server}/suspend', [ServerController::class, 'suspend']); From adba5b1fdbb22137189a09e47c77f322ff3884db Mon Sep 17 00:00:00 2001 From: Hiekki <72362116+Hiekki4@users.noreply.github.com> Date: Wed, 28 Jul 2021 09:47:10 +0100 Subject: [PATCH 3/4] Validation for negative values --- app/Http/Controllers/Api/UserController.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Api/UserController.php b/app/Http/Controllers/Api/UserController.php index 702be6c3..d9fb64fe 100644 --- a/app/Http/Controllers/Api/UserController.php +++ b/app/Http/Controllers/Api/UserController.php @@ -10,6 +10,7 @@ use Illuminate\Contracts\Routing\ResponseFactory; use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Validation\Rule; +use Illuminate\Validation\ValidationException; class UserController extends Controller { @@ -116,7 +117,10 @@ class UserController extends Controller if($request->credits){ if ($user->credits - $request->credits >= 99999999) throw ValidationException::withMessages([ - 'credits' => "You cannot remove this amount of credits because you would exceed the minimum credit" + 'credits' => "You cannot remove this amount of credits because you would exceed the minimum credit limit" + ]); + elseif($user->credits - $request->credits < 0) throw ValidationException::withMessages([ + 'credits' => "You can't remove this amount of credits because you would exceed the minimum credit limit" ]); $user->decrement('credits', $request->credits); } @@ -125,6 +129,9 @@ class UserController extends Controller if ($user->server_limit - $request->server_limit >= 2147483647) throw ValidationException::withMessages([ 'server_limit' => "You cannot remove this amount of servers because it would exceed the minimum server." ]); + elseif($user->server_limit - $request->server_limit < 0) throw ValidationException::withMessages([ + 'server_limit' => "You cannot remove this amount of servers because it would exceed the minimum server." + ]); $user->decrement('server_limit', $request->server_limit); } From f177ae53ce029bda81d3f56302071b3be2795782 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ant=C3=B3nio=20Duarte?= <72362116+Hiekki4@users.noreply.github.com> Date: Sun, 1 Aug 2021 18:52:44 +0100 Subject: [PATCH 4/4] Update UserController.php --- app/Http/Controllers/Api/UserController.php | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/Api/UserController.php b/app/Http/Controllers/Api/UserController.php index d9fb64fe..5a21945d 100644 --- a/app/Http/Controllers/Api/UserController.php +++ b/app/Http/Controllers/Api/UserController.php @@ -116,20 +116,14 @@ class UserController extends Controller ]); if($request->credits){ - if ($user->credits - $request->credits >= 99999999) throw ValidationException::withMessages([ - 'credits' => "You cannot remove this amount of credits because you would exceed the minimum credit limit" - ]); - elseif($user->credits - $request->credits < 0) throw ValidationException::withMessages([ + if($user->credits - $request->credits < 0) throw ValidationException::withMessages([ 'credits' => "You can't remove this amount of credits because you would exceed the minimum credit limit" ]); $user->decrement('credits', $request->credits); } if($request->server_limit){ - if ($user->server_limit - $request->server_limit >= 2147483647) throw ValidationException::withMessages([ - 'server_limit' => "You cannot remove this amount of servers because it would exceed the minimum server." - ]); - elseif($user->server_limit - $request->server_limit < 0) throw ValidationException::withMessages([ + if($user->server_limit - $request->server_limit < 0) throw ValidationException::withMessages([ 'server_limit' => "You cannot remove this amount of servers because it would exceed the minimum server." ]); $user->decrement('server_limit', $request->server_limit);