From 3deb76056de3d2ef90d5c9efe9605c8329225abc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=91cze=20Bence?= Date: Sun, 24 Sep 2023 22:34:34 +0200 Subject: [PATCH] use username for multi games --- public/static/js/game.js | 13 +------------ public/static/js/maps.js | 12 +++++++----- src/Controller/GameController.php | 16 ++++++++++------ views/maps.php | 4 ++-- 4 files changed, 20 insertions(+), 25 deletions(-) diff --git a/public/static/js/game.js b/public/static/js/game.js index 8d73f7f..1f16f4a 100644 --- a/public/static/js/game.js +++ b/public/static/js/game.js @@ -231,17 +231,6 @@ const GameType = Object.freeze({ 'SINGLE': 0, 'MULTI': 1, 'CHALLENGE': 2 }); prepare: function () { var data = new FormData(); - var userNames; - - if (roomId) { - var userNames = localStorage.userNames ? JSON.parse(localStorage.userNames) : {}; - if (!userNames.hasOwnProperty(roomId)) { - userNames[roomId] = prompt('Your name: '); - localStorage.userNames = JSON.stringify(userNames); - } - - data.append('userName', userNames[roomId]); - } document.getElementById('loading').style.visibility = 'visible'; var url = Game.getGameIdentifier() + '/prepare.json'; @@ -618,7 +607,7 @@ const GameType = Object.freeze({ 'SINGLE': 0, 'MULTI': 1, 'CHALLENGE': 2 }); break; case 'anonymous_user': - MapGuesser.showModalWithContent('Error', 'You have to login to join a challenge!'); + MapGuesser.showModalWithContent('Error', 'You have to login to join this game!'); break; default: diff --git a/public/static/js/maps.js b/public/static/js/maps.js index d8f7a9f..f027b26 100644 --- a/public/static/js/maps.js +++ b/public/static/js/maps.js @@ -131,11 +131,13 @@ }, formData); }; - document.getElementById('multiButton').onclick = function () { - MapGuesser.showModal('multi'); - document.getElementById('createNewRoomButton').href = '/multiGame/new/' + this.dataset.mapId; - document.getElementById('multiForm').elements.roomId.select(); - document.getElementById('playMode').style.visibility = 'hidden'; + if (document.getElementById('multiButton')) { + document.getElementById('multiButton').onclick = function () { + MapGuesser.showModal('multi'); + document.getElementById('createNewRoomButton').href = '/multiGame/new/' + this.dataset.mapId; + document.getElementById('multiForm').elements.roomId.select(); + document.getElementById('playMode').style.visibility = 'hidden'; + } } if (document.getElementById('challengeButton')) { diff --git a/src/Controller/GameController.php b/src/Controller/GameController.php index ef3fd5f..7fec2f5 100644 --- a/src/Controller/GameController.php +++ b/src/Controller/GameController.php @@ -190,13 +190,17 @@ class GameController implements IAuthenticationRequired public function prepareMultiGame(): IContent { - $roomId = \Container::$request->query('roomId'); - $userName = \Container::$request->post('userName'); - if (empty($userName)) { - $faker = Factory::create(); - $userName = $faker->userName; + /** + * @var User $user + */ + $user = \Container::$request->user(); + if ($user === null) + { + return new JsonContent(['error' => 'anonymous_user']); } + $roomId = \Container::$request->query('roomId'); + $room = $this->multiRoomRepository->getByRoomId($roomId); if (!isset($room)) { @@ -225,7 +229,7 @@ class GameController implements IAuthenticationRequired $this->multiConnector->sendMessage('join_room', [ 'roomId' => $roomId, 'token' => $token, - 'userName' => $userName + 'userName' => $user->getDisplayName() ]); return new JsonContent([ diff --git a/views/maps.php b/views/maps.php index 8f5e2d4..d1256bd 100644 --- a/views/maps.php +++ b/views/maps.php @@ -9,9 +9,9 @@ TODO: condition!