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}
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,
});
}