From ce640ff1580868c329d52d0e1a7ab2f77e1bcb96 Mon Sep 17 00:00:00 2001 From: AudricV <74829229+AudricV@users.noreply.github.com> Date: Sun, 15 Jan 2023 11:46:47 +0100 Subject: [PATCH] [Client] Add cookie availability check If cookies are not allowed, the game cannot be played. That's the reason why an alert error message is show in this case, in order to prevent the user to play the game. --- truthseeker/static/js/game_common.js | 39 +++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) 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();