From c605d31e483d0388522212c4239373bc9b2909ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Tempez?= Date: Thu, 19 May 2022 15:20:57 +0200 Subject: [PATCH] Connexion persistante --- CHANGES.md | 1 + core/include/update.inc.php | 28 ++++++++++----------------- core/module/user/user.php | 16 +++------------ core/module/user/view/login/login.php | 2 +- 4 files changed, 15 insertions(+), 32 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index aa2c256c..2a4dec8b 100755 --- a/CHANGES.md +++ b/CHANGES.md @@ -12,6 +12,7 @@ - Mise à jour automatisée, affichage de l'erreur en cas d'échec. - Suppression du support de l'import à partir d'une version 9, y compris pour la restauration des sauvegardes. - Optimisation du chargement des base de données, mise à jour des scripts jsonDB et dot. +- Connexion persistante, l'activation de la case à cocher *Rester connecté sur ce navigateur* ne ferme pas la session lorsque le navigateur est fermé. ## Version 11.4.02 ### Modifications : diff --git a/core/include/update.inc.php b/core/include/update.inc.php index f1f0a102..5887b4c1 100644 --- a/core/include/update.inc.php +++ b/core/include/update.inc.php @@ -829,28 +829,20 @@ if ($this->getData(['core', 'dataVersion']) < 11400) { // Redirection des pages d'administration vers la bannière de connexion $this->setData(['config', 'connect', 'redirectLogin', true]); - // Transforme les URL en références relatives - /* - $baseUrl = $this->getData(['core', 'baseUrl']); - $baseUrl2 = str_replace('?', '', $baseUrl); - foreach ($this->getHierarchy(null,null,null) as $parentKey=>$parentValue) { - $pageList [] = $parentKey; - foreach ($parentValue as $childKey) { - $pageList [] = $childKey; - } - } - foreach ($pageList as $parentKey => $parent) { - $s = $this->getPage( $parent, self::$i18n); - // Suppression des sous-dossiers - $s = str_replace ($baseUrl, './', $s); - $s = str_replace ($baseUrl2, './', $s); - $this->setPage( $parent, $s, self::$i18n); - } - */ + // Suppression de la variable URL dans core $this->deleteData(['core', 'baseUrl']); // Mise à jour $this->setData(['core', 'dataVersion', 11400]); +} + +// Version 12.0.00 +if ($this->getData(['core', 'dataVersion']) < 12000) { + // Supprime un cookie non nécessaire + helper::deleteCookie('ZWII_USER_LONGTIME'); + + // Mise à jour + $this->setData(['core', 'dataVersion', 12000]); } \ No newline at end of file diff --git a/core/module/user/user.php b/core/module/user/user.php index c9682de1..850ad8a8 100644 --- a/core/module/user/user.php +++ b/core/module/user/user.php @@ -438,11 +438,9 @@ class user extends common { $this->setData(['user',$userId,'connectFail',0 ]); $this->setData(['user',$userId,'connectTimeout',0 ]); // Expiration - $expire = $this->getInput('userLoginLongTime') ? strtotime("+1 year") : 0; - $c = $this->getInput('userLoginLongTime', helper::FILTER_BOOLEAN) === true ? 'true' : 'false'; + $expire = $this->getInput('userLoginLongTime', helper::FILTER_BOOLEAN ) === true ? strtotime("+1 year") : 0 ; setcookie('ZWII_USER_ID', $userId, $expire, helper::baseUrl(false, false) , '', helper::isHttps(), true); setcookie('ZWII_USER_PASSWORD', $this->getData(['user', $userId, 'password']), $expire, helper::baseUrl(false, false), '', helper::isHttps(), true); - setcookie('ZWII_USER_LONGTIME', $c, $expire, helper::baseUrl(false, false), '', helper::isHttps(), true); // Accès multiples avec le même compte $this->setData(['user',$userId,'accessCsrf',$_SESSION['csrf']]); // Valeurs en sortie lorsque le site est en maintenance et que l'utilisateur n'est pas administrateur @@ -504,9 +502,6 @@ class user extends common { if (!empty($_COOKIE['ZWII_USER_ID'])) { self::$userId = $_COOKIE['ZWII_USER_ID']; } - if (!empty($_COOKIE['ZWII_USER_LONGTIME'])) { - self::$userLongtime = $_COOKIE['ZWII_USER_LONGTIME'] == 'true' ? true : false; - } // Valeurs en sortie $this->addOutput([ 'display' => self::DISPLAY_LAYOUT_LIGHT, @@ -519,17 +514,12 @@ class user extends common { * Déconnexion */ public function logout() { - // Ne pas effacer l'identifiant mais seulement le mot de passe - if (array_key_exists('ZWII_USER_LONGTIME',$_COOKIE) - AND $_COOKIE['ZWII_USER_LONGTIME'] !== 'true' ) { - helper::deleteCookie('ZWII_USER_ID'); - helper::deleteCookie('ZWII_USER_LONGTIME'); - } + helper::deleteCookie('ZWII_USER_ID'); helper::deleteCookie('ZWII_USER_PASSWORD'); session_destroy(); // Valeurs en sortie $this->addOutput([ - 'notification' => 'Déconnexion réussie', + 'notification' => 'Vous avez été déconnecté', 'redirect' => helper::baseUrl(false), 'state' => true ]); diff --git a/core/module/user/view/login/login.php b/core/module/user/view/login/login.php index 31ad0e47..c563772d 100644 --- a/core/module/user/view/login/login.php +++ b/core/module/user/view/login/login.php @@ -30,7 +30,7 @@
- $module::$userLongtime ]); ?>