From 06221e630110dc81021f188b8cf8a7837e08967b Mon Sep 17 00:00:00 2001 From: Gregoire Parant Date: Tue, 17 Nov 2020 18:49:45 +0100 Subject: [PATCH 1/2] Fix admin console in public room --- back/src/Enum/EnvironmentVariable.ts | 2 +- front/src/Connexion/ConnectionManager.ts | 68 +++++++++++++----------- front/src/Connexion/LocalUserStore.ts | 5 ++ 3 files changed, 43 insertions(+), 32 deletions(-) diff --git a/back/src/Enum/EnvironmentVariable.ts b/back/src/Enum/EnvironmentVariable.ts index 3a2ac99e..cd1dbf2d 100644 --- a/back/src/Enum/EnvironmentVariable.ts +++ b/back/src/Enum/EnvironmentVariable.ts @@ -3,7 +3,7 @@ const URL_ROOM_STARTED = "/Floor0/floor0.json"; const MINIMUM_DISTANCE = process.env.MINIMUM_DISTANCE ? Number(process.env.MINIMUM_DISTANCE) : 64; const GROUP_RADIUS = process.env.GROUP_RADIUS ? Number(process.env.GROUP_RADIUS) : 48; const ALLOW_ARTILLERY = process.env.ALLOW_ARTILLERY ? process.env.ALLOW_ARTILLERY == 'true' : false; -const ADMIN_API_URL = process.env.ADMIN_API_URL || ''; +const ADMIN_API_URL = process.env.ADMIN_API_URL || 'http://admin'; const ADMIN_API_TOKEN = process.env.ADMIN_API_TOKEN || 'myapitoken'; const MAX_USERS_PER_ROOM = parseInt(process.env.MAX_USERS_PER_ROOM || '') || 600; const CPU_OVERHEAT_THRESHOLD = Number(process.env.CPU_OVERHEAT_THRESHOLD) || 80; diff --git a/front/src/Connexion/ConnectionManager.ts b/front/src/Connexion/ConnectionManager.ts index 6f3aad04..0fb3316f 100644 --- a/front/src/Connexion/ConnectionManager.ts +++ b/front/src/Connexion/ConnectionManager.ts @@ -31,41 +31,47 @@ class ConnectionManager { const room = new Room(window.location.pathname + window.location.hash); return Promise.resolve(room); - } else if (connexionType === GameConnexionTypes.anonymous || connexionType === GameConnexionTypes.empty) { - const localUser = localUserStore.getLocalUser(); + } else { + //if connexion anonymous, remove local token + if(connexionType !== GameConnexionTypes.organization) { + localUserStore.removeUser(); + } + if (connexionType === GameConnexionTypes.anonymous || connexionType === GameConnexionTypes.empty) { + const localUser = localUserStore.getLocalUser(); - if (localUser && localUser.jwtToken && localUser.uuid && localUser.textures) { - this.localUser = localUser; - try { - await this.verifyToken(localUser.jwtToken); - } catch(e) { - // If the token is invalid, let's generate an anonymous one. - console.error('JWT token invalid. Did it expire? Login anonymously instead.'); + if (localUser && localUser.jwtToken && localUser.uuid && localUser.textures) { + this.localUser = localUser; + try { + await this.verifyToken(localUser.jwtToken); + } catch (e) { + // If the token is invalid, let's generate an anonymous one. + console.error('JWT token invalid. Did it expire? Login anonymously instead.'); + await this.anonymousLogin(); + } + } else { await this.anonymousLogin(); } - } else { - await this.anonymousLogin(); - } - let roomId: string - if (connexionType === GameConnexionTypes.empty) { - const defaultMapUrl = window.location.host.replace('play.', 'maps.') + URL_ROOM_STARTED; - roomId = urlManager.editUrlForRoom(defaultMapUrl, null, null); - } else { - roomId = window.location.pathname + window.location.hash; - } - const room = new Room(roomId); - return Promise.resolve(room); - } else if (connexionType == GameConnexionTypes.organization) { - const localUser = localUserStore.getLocalUser(); - - if (localUser) { - this.localUser = localUser; - await this.verifyToken(localUser.jwtToken); - const room = new Room(window.location.pathname + window.location.hash); + let roomId: string + if (connexionType === GameConnexionTypes.empty) { + const defaultMapUrl = window.location.host.replace('play.', 'maps.') + URL_ROOM_STARTED; + roomId = urlManager.editUrlForRoom(defaultMapUrl, null, null); + } else { + roomId = window.location.pathname + window.location.hash; + } + const room = new Room(roomId); return Promise.resolve(room); - } else { - //todo: find some kind of fallback? - return Promise.reject('Could not find a user in localstorage'); + } else if (connexionType == GameConnexionTypes.organization) { + const localUser = localUserStore.getLocalUser(); + + if (localUser) { + this.localUser = localUser; + await this.verifyToken(localUser.jwtToken); + const room = new Room(window.location.pathname + window.location.hash); + return Promise.resolve(room); + } else { + //todo: find some kind of fallback? + return Promise.reject('Could not find a user in localstorage'); + } } } diff --git a/front/src/Connexion/LocalUserStore.ts b/front/src/Connexion/LocalUserStore.ts index afe01bcd..031a64bc 100644 --- a/front/src/Connexion/LocalUserStore.ts +++ b/front/src/Connexion/LocalUserStore.ts @@ -6,6 +6,11 @@ class LocalUserStore { saveUser(localUser: LocalUser) { localStorage.setItem('localUser', JSON.stringify(localUser)); } + + removeUser() { + localStorage.removeItem('localUser'); + } + getLocalUser(): LocalUser|null { const data = localStorage.getItem('localUser'); return data ? JSON.parse(data) : null; From f770876de539e3ca629669ee32225d9175e72fd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?gr=C3=A9goire=20parant?= Date: Sun, 22 Nov 2020 12:37:00 +0100 Subject: [PATCH 2/2] Update EnvironmentVariable.ts --- back/src/Enum/EnvironmentVariable.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/back/src/Enum/EnvironmentVariable.ts b/back/src/Enum/EnvironmentVariable.ts index cd1dbf2d..3a2ac99e 100644 --- a/back/src/Enum/EnvironmentVariable.ts +++ b/back/src/Enum/EnvironmentVariable.ts @@ -3,7 +3,7 @@ const URL_ROOM_STARTED = "/Floor0/floor0.json"; const MINIMUM_DISTANCE = process.env.MINIMUM_DISTANCE ? Number(process.env.MINIMUM_DISTANCE) : 64; const GROUP_RADIUS = process.env.GROUP_RADIUS ? Number(process.env.GROUP_RADIUS) : 48; const ALLOW_ARTILLERY = process.env.ALLOW_ARTILLERY ? process.env.ALLOW_ARTILLERY == 'true' : false; -const ADMIN_API_URL = process.env.ADMIN_API_URL || 'http://admin'; +const ADMIN_API_URL = process.env.ADMIN_API_URL || ''; const ADMIN_API_TOKEN = process.env.ADMIN_API_TOKEN || 'myapitoken'; const MAX_USERS_PER_ROOM = parseInt(process.env.MAX_USERS_PER_ROOM || '') || 600; const CPU_OVERHEAT_THRESHOLD = Number(process.env.CPU_OVERHEAT_THRESHOLD) || 80;