diff --git a/truthseeker/static/js/game_common.js b/truthseeker/static/js/game_common.js index a0655e7..a200e69 100644 --- a/truthseeker/static/js/game_common.js +++ b/truthseeker/static/js/game_common.js @@ -31,6 +31,42 @@ function checkWebSocketAvailability() { } } +/** + * Create a temporary cookie to detect whether cookies are allowed for the game website domain. + * + *

+ * This cookie, cookietest, with 1 as a value, is automatically deleted after being created. + *

+ * + * @returns whether cookies are allowed for the website domain + */ +function createTemporaryCookieThenDeleteIt() { + try { + // Create a temporary cookie + document.cookie = "cookietest=1; path=/"; + let cookieTestResult = document.cookie.indexOf("cookietest=") !== -1; + // Delete the temporary cookie + document.cookie = "cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/"; + return cookieTestResult; + } catch (e) { + return false; + } +} + +/** + * Check the availability of cookies in the client. + * + *

+ * If it is not available, an error message which prevents playing the game and requesting user to + * enable website cookies is shown. + *

+ */ +function checkCookiesAvailability() { + if (!createTemporaryCookieThenDeleteIt()) { + showUnsupportedBrowserMessage("Votre navigateur ne prend pas en charge les cookies, nécessaires au fonctionnement du jeu. Veuillez les activer dans les paramètres de votre navigateur."); + } +} + /** * Show the unsupported browser dialog, which disables ability to play the game, using the given * unsupported browser message text. @@ -67,4 +103,5 @@ function showAlertDialog(element) { // Execution of main functions detectIEBrowsers(); -checkWebSocketAvailability(); \ No newline at end of file +checkWebSocketAvailability(); +checkCookiesAvailability(); diff --git a/truthseeker/static/js/game_start_page.js b/truthseeker/static/js/game_start_page.js index 11d58a0..9ef93e1 100644 --- a/truthseeker/static/js/game_start_page.js +++ b/truthseeker/static/js/game_start_page.js @@ -160,7 +160,6 @@ function setCurrentTheme() { } catch (e) { console.error("Unable to set theme from localStorage", e); htmlElement.classList.add("dark"); - showUnsupportedBrowserMessage("Votre navigateur ne semble pas supporter le localStorage. Certains navigateurs nécessitant l'autorisation d'utiliser des cookies pour utiliser le localStorage, vérifiez que les cookies sont autorisés pour le site du jeu dans le vôtre."); } } diff --git a/truthseeker/templates/game.html b/truthseeker/templates/game.html index 3b3eaeb..a6f5408 100644 --- a/truthseeker/templates/game.html +++ b/truthseeker/templates/game.html @@ -87,6 +87,11 @@

Navigateur non supporté

+
diff --git a/truthseeker/templates/index.html b/truthseeker/templates/index.html index 2eff2bd..0294085 100644 --- a/truthseeker/templates/index.html +++ b/truthseeker/templates/index.html @@ -54,6 +54,11 @@

Navigateur non supporté

+
diff --git a/truthseeker/templates/lobby.html b/truthseeker/templates/lobby.html index 220099e..9af1cf8 100644 --- a/truthseeker/templates/lobby.html +++ b/truthseeker/templates/lobby.html @@ -51,6 +51,11 @@

Navigateur non supporté

+