MAPG-235 created error handling for challenge access without login
This commit is contained in:
parent
069c6b37c8
commit
62251b1062
@ -1,6 +1,6 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const GameType = Object.freeze({'SINGLE': 0, 'MULTI': 1, 'CHALLENGE': 2});
|
const GameType = Object.freeze({ 'SINGLE': 0, 'MULTI': 1, 'CHALLENGE': 2 });
|
||||||
|
|
||||||
(function () {
|
(function () {
|
||||||
var Game = {
|
var Game = {
|
||||||
@ -215,8 +215,8 @@ const GameType = Object.freeze({'SINGLE': 0, 'MULTI': 1, 'CHALLENGE': 2});
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
getGameIdentifier: function() {
|
getGameIdentifier: function () {
|
||||||
switch(Game.type) {
|
switch (Game.type) {
|
||||||
case GameType.SINGLE:
|
case GameType.SINGLE:
|
||||||
return '/game/' + mapId;
|
return '/game/' + mapId;
|
||||||
case GameType.MULTI:
|
case GameType.MULTI:
|
||||||
@ -317,7 +317,7 @@ const GameType = Object.freeze({'SINGLE': 0, 'MULTI': 1, 'CHALLENGE': 2});
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
transitToResultMap: function() {
|
transitToResultMap: function () {
|
||||||
// TODO: refactor - it is necessary for mobile
|
// TODO: refactor - it is necessary for mobile
|
||||||
if (window.getComputedStyle(document.getElementById('guess')).visibility === 'hidden') {
|
if (window.getComputedStyle(document.getElementById('guess')).visibility === 'hidden') {
|
||||||
document.getElementById('showGuessButton').click();
|
document.getElementById('showGuessButton').click();
|
||||||
@ -353,7 +353,7 @@ const GameType = Object.freeze({'SINGLE': 0, 'MULTI': 1, 'CHALLENGE': 2});
|
|||||||
},
|
},
|
||||||
|
|
||||||
loadHistory: function (history) {
|
loadHistory: function (history) {
|
||||||
if(!history)
|
if (!history)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Game.history = history;
|
Game.history = history;
|
||||||
@ -387,7 +387,7 @@ const GameType = Object.freeze({'SINGLE': 0, 'MULTI': 1, 'CHALLENGE': 2});
|
|||||||
Game.scoreSum += round.result.score;
|
Game.scoreSum += round.result.score;
|
||||||
|
|
||||||
|
|
||||||
if(round.allResults !== undefined) {
|
if (round.allResults !== undefined) {
|
||||||
for (var j = 0; j < round.allResults.length; ++j) {
|
for (var j = 0; j < round.allResults.length; ++j) {
|
||||||
var result = round.allResults[j];
|
var result = round.allResults[j];
|
||||||
if (result.guessPosition) {
|
if (result.guessPosition) {
|
||||||
@ -514,7 +514,11 @@ const GameType = Object.freeze({'SINGLE': 0, 'MULTI': 1, 'CHALLENGE': 2});
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'game_not_found':
|
case 'game_not_found':
|
||||||
MapGuesser.showModalWithContent('Error', 'The game room was not found by this ID. Please check the link.');
|
MapGuesser.showModalWithContent('Error', 'The game was not found by this ID. Please check the link.');
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'anonymous_user':
|
||||||
|
MapGuesser.showModalWithContent('Error', 'You have to login to join a challenge!');
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -637,48 +641,6 @@ const GameType = Object.freeze({'SINGLE': 0, 'MULTI': 1, 'CHALLENGE': 2});
|
|||||||
Game.pov = this.response.place.pov;
|
Game.pov = this.response.place.pov;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if(this.response.history) {
|
|
||||||
|
|
||||||
// // game finished
|
|
||||||
// // delete everything but the last round
|
|
||||||
// for (var i = 0; i < Game.rounds.length -1; ++i) {
|
|
||||||
// var round = Game.rounds[i];
|
|
||||||
|
|
||||||
// if (round.realMarker) {
|
|
||||||
// round.realMarker.setMap(null);
|
|
||||||
// }
|
|
||||||
// for (var j = 0; j < round.guessMarkers.length; ++j) {
|
|
||||||
// var guessMarker = round.guessMarkers[j];
|
|
||||||
// guessMarker.marker.setMap(null);
|
|
||||||
// guessMarker.line.setMap(null);
|
|
||||||
// if (guessMarker.info) {
|
|
||||||
// guessMarker.info.close();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // Game.rounds = [];
|
|
||||||
|
|
||||||
// for (var i = 0; i < this.response.history.length; ++i) {
|
|
||||||
// var round = this.response.history[i];
|
|
||||||
// Game.rounds[i] = { position: round.position, guessPosition: round.result.guessPosition, realMarker: null, guessMarkers: [] };
|
|
||||||
// Game.addPositionToResultMap(true);
|
|
||||||
// if (round.result.guessPosition) {
|
|
||||||
// Game.addGuessPositionToResultMap(round.result.guessPosition, null, true);
|
|
||||||
// }
|
|
||||||
// Game.scoreSum += round.result.score;
|
|
||||||
|
|
||||||
// for (var j = 0; j < round.allResults.length; ++j) {
|
|
||||||
// var result = round.allResults[j];
|
|
||||||
// if (result.guessPosition) {
|
|
||||||
// Game.addGuessPositionToResultMap(result.guessPosition, result, true);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
}, data);
|
}, data);
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -995,9 +957,9 @@ const GameType = Object.freeze({'SINGLE': 0, 'MULTI': 1, 'CHALLENGE': 2});
|
|||||||
document.getElementById("compass").style.transform = "translateY(-50%) rotate(" + heading + "deg)";
|
document.getElementById("compass").style.transform = "translateY(-50%) rotate(" + heading + "deg)";
|
||||||
});
|
});
|
||||||
|
|
||||||
if(roomId !== null) {
|
if (roomId !== null) {
|
||||||
Game.type = GameType.MULTI;
|
Game.type = GameType.MULTI;
|
||||||
} else if(challengeToken !== null) {
|
} else if (challengeToken !== null) {
|
||||||
Game.type = GameType.CHALLENGE;
|
Game.type = GameType.CHALLENGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -239,8 +239,19 @@ class GameController
|
|||||||
$challengeToken_str = $this->request->query('challengeToken');
|
$challengeToken_str = $this->request->query('challengeToken');
|
||||||
$session = $this->request->session();
|
$session = $this->request->session();
|
||||||
$userId = $session->get('userId');
|
$userId = $session->get('userId');
|
||||||
|
|
||||||
|
if (!isset($userId))
|
||||||
|
{
|
||||||
|
return new JsonContent(['error' => 'anonymous_user']);
|
||||||
|
}
|
||||||
|
|
||||||
$challenge = $this->challengeRepository->getByTokenStr($challengeToken_str);
|
$challenge = $this->challengeRepository->getByTokenStr($challengeToken_str);
|
||||||
|
|
||||||
|
if (!isset($challenge))
|
||||||
|
{
|
||||||
|
return new JsonContent(['error' => 'game_not_found']);
|
||||||
|
}
|
||||||
|
|
||||||
if(!$this->userInChallengeRepository->isUserParticipatingInChallenge($userId, $challenge)) {
|
if(!$this->userInChallengeRepository->isUserParticipatingInChallenge($userId, $challenge)) {
|
||||||
// new player is joining
|
// new player is joining
|
||||||
$userInChallenge = new UserInChallenge();
|
$userInChallenge = new UserInChallenge();
|
||||||
|
Loading…
Reference in New Issue
Block a user