From 160b75537f604711638d1837590524f6ef96e706 Mon Sep 17 00:00:00 2001 From: Dan Balasescu Date: Wed, 22 Jan 2025 20:54:50 +0900 Subject: [PATCH 1/4] Return only room ID when creating/joining via LIO --- app/Http/Controllers/InterOp/Multiplayer/RoomsController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/InterOp/Multiplayer/RoomsController.php b/app/Http/Controllers/InterOp/Multiplayer/RoomsController.php index 27e08dfbb9c..6136131e57c 100644 --- a/app/Http/Controllers/InterOp/Multiplayer/RoomsController.php +++ b/app/Http/Controllers/InterOp/Multiplayer/RoomsController.php @@ -20,7 +20,7 @@ public function join(string $id, string $userId) $room->assertCorrectPassword(get_string(request('password'))); $room->join($user); - return RoomTransformer::createShowResponse($room); + return $room->getKey(); } public function store() @@ -30,6 +30,6 @@ public function store() $room = (new Room())->startGame($user, $params); - return RoomTransformer::createShowResponse($room); + return $room->getKey(); } } From 3fe651794e0d92ba47c695fe4443974510f0510d Mon Sep 17 00:00:00 2001 From: Dan Balasescu Date: Wed, 22 Jan 2025 20:55:06 +0900 Subject: [PATCH 2/4] Add LIO endpoint to part rooms --- .../Controllers/InterOp/Multiplayer/RoomsController.php | 8 ++++++++ app/Http/Controllers/Multiplayer/RoomsController.php | 6 ++++-- app/Models/Multiplayer/Room.php | 5 +++++ routes/web.php | 1 + 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/InterOp/Multiplayer/RoomsController.php b/app/Http/Controllers/InterOp/Multiplayer/RoomsController.php index 6136131e57c..337dfc1b964 100644 --- a/app/Http/Controllers/InterOp/Multiplayer/RoomsController.php +++ b/app/Http/Controllers/InterOp/Multiplayer/RoomsController.php @@ -23,6 +23,14 @@ public function join(string $id, string $userId) return $room->getKey(); } + public function part(string $id, string $userId) + { + $user = User::findOrFail($userId); + $room = Room::findOrFail($id); + + return $room->part($user); + } + public function store() { $params = \Request::all(); diff --git a/app/Http/Controllers/Multiplayer/RoomsController.php b/app/Http/Controllers/Multiplayer/RoomsController.php index 00d0bdd7c13..d0d8bd748b4 100644 --- a/app/Http/Controllers/Multiplayer/RoomsController.php +++ b/app/Http/Controllers/Multiplayer/RoomsController.php @@ -138,12 +138,14 @@ public function leaderboard($roomId) public function part($roomId, $userId) { + $currentUser = \Auth::user(); // this allows admins/host/whoever to remove users from games in the future - if (get_int($userId) !== auth()->user()->user_id) { + if (get_int($userId) !== $currentUser->getKey()) { abort(403); } - Room::findOrFail($roomId)->channel->removeUser(auth()->user()); + $room = Room::findOrFail($roomId); + $room->part($currentUser); return response([], 204); } diff --git a/app/Models/Multiplayer/Room.php b/app/Models/Multiplayer/Room.php index 47e6dcad85e..15bc27784f5 100644 --- a/app/Models/Multiplayer/Room.php +++ b/app/Models/Multiplayer/Room.php @@ -507,6 +507,11 @@ public function join(User $user) $this->channel->addUser($user); } + public function part(User $user) + { + $this->channel->removeUser($user); + } + public function participants(): HasMany { $query = $this->userHighScores(); diff --git a/routes/web.php b/routes/web.php index b601b239d58..4e86b47085f 100644 --- a/routes/web.php +++ b/routes/web.php @@ -604,6 +604,7 @@ Route::group(['as' => 'multiplayer.', 'namespace' => 'Multiplayer', 'prefix' => 'multiplayer'], function () { Route::put('rooms/{room}/users/{user}', 'RoomsController@join')->name('rooms.join'); + Route::delete('rooms/{room}/users/{user}', 'RoomsController@part')->name('rooms.part'); Route::apiResource('rooms', 'RoomsController', ['only' => ['store']]); }); From e56ca97b6b2fdd8021d1b223ed42fa63672ce58f Mon Sep 17 00:00:00 2001 From: Dan Balasescu Date: Wed, 22 Jan 2025 21:01:03 +0900 Subject: [PATCH 3/4] Remove responses where not required --- .../Controllers/InterOp/Multiplayer/RoomsController.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/InterOp/Multiplayer/RoomsController.php b/app/Http/Controllers/InterOp/Multiplayer/RoomsController.php index 337dfc1b964..71b553d55f0 100644 --- a/app/Http/Controllers/InterOp/Multiplayer/RoomsController.php +++ b/app/Http/Controllers/InterOp/Multiplayer/RoomsController.php @@ -20,7 +20,7 @@ public function join(string $id, string $userId) $room->assertCorrectPassword(get_string(request('password'))); $room->join($user); - return $room->getKey(); + return response(null, 204); } public function part(string $id, string $userId) @@ -28,7 +28,9 @@ public function part(string $id, string $userId) $user = User::findOrFail($userId); $room = Room::findOrFail($id); - return $room->part($user); + $room->part($user); + + return response(null, 204); } public function store() From 5ba7ff33c5dd5b6ef487a61a1d1b60d32c7033af Mon Sep 17 00:00:00 2001 From: Dan Balasescu Date: Thu, 23 Jan 2025 19:23:48 +0900 Subject: [PATCH 4/4] Fix inspection --- app/Http/Controllers/InterOp/Multiplayer/RoomsController.php | 1 - 1 file changed, 1 deletion(-) diff --git a/app/Http/Controllers/InterOp/Multiplayer/RoomsController.php b/app/Http/Controllers/InterOp/Multiplayer/RoomsController.php index 71b553d55f0..cd317a92077 100644 --- a/app/Http/Controllers/InterOp/Multiplayer/RoomsController.php +++ b/app/Http/Controllers/InterOp/Multiplayer/RoomsController.php @@ -8,7 +8,6 @@ use App\Http\Controllers\Controller; use App\Models\Multiplayer\Room; use App\Models\User; -use App\Transformers\Multiplayer\RoomTransformer; class RoomsController extends Controller {