From 5a9e7405e0ab21b11991ca3077c8e0d290f9bdb2 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Sun, 9 Aug 2020 16:35:03 +0200 Subject: [PATCH] Cookie authentification : samesite = strict | remember me ok --- CHANGES.md | 4 +++- core/module/install/view/index/index.php | 4 ++-- core/module/user/user.php | 14 ++++++++++---- core/module/user/view/login/login.php | 7 +++---- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 0d67ec6c..f60de150 100755 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,8 +3,10 @@ ## version 10.2.07 - Correction : - Bloquage de l'incrémentation de l'id de page lorsque deux pages ont le même nom. -- Modification : + - Login : l'option "Se souvenir de moi" est fonctionnelle. +- Modifications : - Configuration: sauvegarde du site dans une archive : animation d'attente avec message de confirmation ou d'erreur. + - Cookies d'authentification : option samesite sur Strict ## version 10.2.06 - Corrections : diff --git a/core/module/install/view/index/index.php b/core/module/install/view/index/index.php index 74677c5a..6debdbf3 100755 --- a/core/module/install/view/index/index.php +++ b/core/module/install/view/index/index.php @@ -20,7 +20,7 @@ 'off', - 'label' => 'Adresse mail' + 'label' => 'Adresse mail' ]); ?>
@@ -41,7 +41,7 @@ true ]); - ?> + ?>
diff --git a/core/module/user/user.php b/core/module/user/user.php index 4ab38f8f..3dba717c 100755 --- a/core/module/user/user.php +++ b/core/module/user/user.php @@ -24,8 +24,11 @@ class user extends common { 'logout' => self::GROUP_MEMBER, 'reset' => self::GROUP_VISITOR ]; + public static $users = []; + public static $userId = ''; + /** * Ajout */ @@ -373,7 +376,7 @@ class user extends common { */ } else { // Cas 4 : le délai de blocage est dépassé et le compte est au max - Réinitialiser - if ($this->getData(['user',$userId,'connectTimeout']) + $this->getData(['config', 'connect', 'timeout']) < time() + if ($this->getData(['user',$userId,'connectTimeout']) + $this->getData(['config', 'connect', 'timeout']) < time() AND $this->getData(['user',$userId,'connectFail']) === $this->getData(['config', 'connect', 'attempt']) ) { $this->setData(['user',$userId,'connectFail',0 ]); $this->setData(['user',$userId,'connectTimeout',0 ]); @@ -388,8 +391,8 @@ class user extends common { ) { // Expiration $expire = $this->getInput('userLoginLongTime') ? 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_ID', $userId, $expire, helper::baseUrl(false, false) . '; samesite=strict' , '', helper::isHttps(), true); + setcookie('ZWII_USER_PASSWORD', $this->getData(['user', $userId, 'password']), $expire, helper::baseUrl(false, false) . '; samesite=strict', '', 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 @@ -442,6 +445,9 @@ class user extends common { } } } + if (!empty($_COOKIE['ZWII_USER_ID'])) { + self::$userId = $_COOKIE['ZWII_USER_ID']; + } // Valeurs en sortie $this->addOutput([ 'display' => self::DISPLAY_LAYOUT_LIGHT, @@ -454,7 +460,7 @@ class user extends common { * Déconnexion */ public function logout() { - helper::deleteCookie('ZWII_USER_ID'); + // Ne pas effacer l'identifiant mais seulement le mot de passe helper::deleteCookie('ZWII_USER_PASSWORD'); session_destroy(); // Valeurs en sortie diff --git a/core/module/user/view/login/login.php b/core/module/user/view/login/login.php index a25c0529..bce31c82 100755 --- a/core/module/user/view/login/login.php +++ b/core/module/user/view/login/login.php @@ -2,7 +2,8 @@
'Identifiant' + 'label' => 'Identifiant', + 'value' => $module::$userId ]); ?>
@@ -13,9 +14,7 @@
- 'La session est close à la fermeture du navigateur.' - ]); ?> +