浏览代码

feat: ✨ Add api routes for suspending and unsuspending an User

This commit adresses #359
Johannes F 3 年之前
父节点
当前提交
b831bd0c22
共有 2 个文件被更改,包括 50 次插入1 次删除
  1. 48 1
      app/Http/Controllers/Api/UserController.php
  2. 2 0
      routes/api.php

+ 48 - 1
app/Http/Controllers/Api/UserController.php

@@ -89,7 +89,7 @@ class UserController extends Controller
         ]);
         ]);
 
 
         event(new UserUpdateCreditsEvent($user));
         event(new UserUpdateCreditsEvent($user));
-        
+
         //Update Users Password on Pterodactyl
         //Update Users Password on Pterodactyl
         //Username,Mail,First and Lastname are required aswell
         //Username,Mail,First and Lastname are required aswell
         $response = Pterodactyl::client()->patch('/application/users/'.$user->pterodactyl_id, [
         $response = Pterodactyl::client()->patch('/application/users/'.$user->pterodactyl_id, [
@@ -181,6 +181,53 @@ class UserController extends Controller
         return $user;
         return $user;
     }
     }
 
 
+    /**
+     * Suspends the user
+     *
+     * @param Request $request
+     * @param int $id
+     * @return bool
+     * @throws ValidationException
+     */
+    public function suspend(Request $request, int $id)
+    {
+        $discordUser = DiscordUser::find($id);
+        $user = $discordUser ? $discordUser->user : User::findOrFail($id);
+
+        if ($user->isSuspended()) {
+                throw ValidationException::withMessages([
+                    'error' => 'The user is already suspended',
+                ]);
+        }
+        $user->suspend();
+
+        return $user;
+    }
+
+    /**
+     * Suspends the user
+     *
+     * @param Request $request
+     * @param int $id
+     * @return bool
+     * @throws ValidationException
+     */
+    public function unsuspend(Request $request, int $id)
+    {
+        $discordUser = DiscordUser::find($id);
+        $user = $discordUser ? $discordUser->user : User::findOrFail($id);
+
+        if (!$user->isSuspended()) {
+            throw ValidationException::withMessages([
+                'error' => "You cannot unsuspend an User who is not suspended."
+            ]);
+        }
+
+        $user->unSuspend();
+
+        return $user;
+    }
+
     /**
     /**
      * @throws ValidationException
      * @throws ValidationException
      */
      */

+ 2 - 0
routes/api.php

@@ -20,6 +20,8 @@ use Illuminate\Support\Facades\Route;
 Route::middleware('api.token')->group(function () {
 Route::middleware('api.token')->group(function () {
     Route::patch('/users/{user}/increment', [UserController::class, 'increment']);
     Route::patch('/users/{user}/increment', [UserController::class, 'increment']);
     Route::patch('/users/{user}/decrement', [UserController::class, 'decrement']);
     Route::patch('/users/{user}/decrement', [UserController::class, 'decrement']);
+    Route::patch('/users/{user}/suspend', [UserController::class, 'suspend']);
+    Route::patch('/users/{user}/unsuspend', [UserController::class, 'unsuspend']);
     Route::resource('users', UserController::class)->except(['create']);
     Route::resource('users', UserController::class)->except(['create']);
 
 
     Route::patch('/servers/{server}/suspend', [ServerController::class, 'suspend']);
     Route::patch('/servers/{server}/suspend', [ServerController::class, 'suspend']);