diff --git a/back/src/Model/GameRoom.ts b/back/src/Model/GameRoom.ts index e2603ca8..b964477d 100644 --- a/back/src/Model/GameRoom.ts +++ b/back/src/Model/GameRoom.ts @@ -570,6 +570,7 @@ export class GameRoom { mapUrl, authenticationMandatory: null, group: null, + showPoweredBy: true, }; } diff --git a/front/src/Components/Login/LoginScene.svelte b/front/src/Components/Login/LoginScene.svelte index d3d8a1b0..edc45ce2 100644 --- a/front/src/Components/Login/LoginScene.svelte +++ b/front/src/Components/Login/LoginScene.svelte @@ -63,7 +63,7 @@
- {#if logo !== logoImg} + {#if logo !== logoImg && gameManager.currentStartedRoom.showPoweredBy !== false}
Powered by WorkAdventure
diff --git a/front/src/Connexion/ConnectionManager.ts b/front/src/Connexion/ConnectionManager.ts index bd305413..a7e0f6b9 100644 --- a/front/src/Connexion/ConnectionManager.ts +++ b/front/src/Connexion/ConnectionManager.ts @@ -295,7 +295,32 @@ class ConnectionManager { }); connection.connectionErrorStream.subscribe((event: CloseEvent) => { - console.log("connectionErrorStream => An error occurred while connecting to socket server. Retrying"); + console.info( + "An error occurred while connecting to socket server. Retrying => Event: ", + event.reason, + event.code, + event + ); + + //However, Chrome will rarely report any close code 1006 reasons to the Javascript side. + //This is likely due to client security rules in the WebSocket spec to prevent abusing WebSocket. + //(such as using it to scan for open ports on a destination server, or for generating lots of connections for a denial-of-service attack). + // more detail here: https://www.rfc-editor.org/rfc/rfc6455#section-7.4.1 + if (event.code === 1006) { + //check cookies + const cookies = document.cookie.split(";"); + for (const cookie of cookies) { + //check id cookie posthog exist + const numberIndexPh = cookie.indexOf("_posthog="); + if (numberIndexPh !== -1) { + //if exist, remove posthog cookie + document.cookie = + cookie.slice(0, numberIndexPh + 9) + + "; domain=.workadventu.re; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/"; + } + } + } + reject( new Error( "An error occurred while connecting to socket server. Retrying. Code: " + diff --git a/front/src/Connexion/Room.ts b/front/src/Connexion/Room.ts index 4e896572..ef036e09 100644 --- a/front/src/Connexion/Room.ts +++ b/front/src/Connexion/Room.ts @@ -25,6 +25,7 @@ export class Room { private _canReport: boolean = false; private _loadingLogo: string | undefined; private _loginSceneLogo: string | undefined; + private _showPoweredBy: boolean | undefined = true; private constructor(private roomUrl: URL) { this.id = roomUrl.pathname; @@ -120,6 +121,7 @@ export class Room { this._canReport = data.canReport ?? false; this._loadingLogo = data.loadingLogo ?? undefined; this._loginSceneLogo = data.loginSceneLogo ?? undefined; + this._showPoweredBy = data.showPoweredBy ?? true; return new MapDetail(data.mapUrl); } else { console.log(data); @@ -213,4 +215,8 @@ export class Room { get loginSceneLogo(): string | undefined { return this._loginSceneLogo; } + + get showPoweredBy(): boolean | undefined { + return this._showPoweredBy; + } } diff --git a/front/src/Phaser/Components/Loader.ts b/front/src/Phaser/Components/Loader.ts index 9e8751d7..e84349fb 100644 --- a/front/src/Phaser/Components/Loader.ts +++ b/front/src/Phaser/Components/Loader.ts @@ -54,7 +54,7 @@ export class Loader { .catch((e) => console.warn("Could not load logo: ", logoResource, e)); let poweredByLogoPromise: CancelablePromise | undefined; - if (gameManager.currentStartedRoom.loadingLogo) { + if (gameManager.currentStartedRoom.loadingLogo && gameManager.currentStartedRoom.showPoweredBy !== false) { poweredByLogoPromise = this.superLoad.image( "poweredByLogo", "static/images/Powered_By_WorkAdventure_Small.png" diff --git a/messages/JsonMessages/MapDetailsData.ts b/messages/JsonMessages/MapDetailsData.ts index 5df1bc7f..c191ae72 100644 --- a/messages/JsonMessages/MapDetailsData.ts +++ b/messages/JsonMessages/MapDetailsData.ts @@ -49,6 +49,10 @@ export const isMapDetailsData = z.object({ description: "The URL of the image to be used on the LoginScene", example: "https://example.com/logo_login.png", }), + showPoweredBy: extendApi(z.boolean(), { + description: "The URL of the image to be used on the name scene", + example: "https://example.com/logo_login.png", + }), }); export type MapDetailsData = z.infer; diff --git a/pusher/src/Services/LocalAdmin.ts b/pusher/src/Services/LocalAdmin.ts index 469966b3..d16f4c30 100644 --- a/pusher/src/Services/LocalAdmin.ts +++ b/pusher/src/Services/LocalAdmin.ts @@ -49,6 +49,7 @@ class LocalAdmin implements AdminInterface { iframeAuthentication: null, loadingLogo: null, loginSceneLogo: null, + showPoweredBy: true, }); }