Cookie authentification : samesite = strict | remember me ok

This commit is contained in:
Fred Tempez 2020-08-09 16:35:03 +02:00
parent c933abefc2
commit 5a9e7405e0
4 changed files with 18 additions and 11 deletions

View File

@ -3,8 +3,10 @@
## version 10.2.07 ## version 10.2.07
- Correction : - Correction :
- Bloquage de l'incrémentation de l'id de page lorsque deux pages ont le même nom. - 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. - 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 ## version 10.2.06
- Corrections : - Corrections :

View File

@ -20,7 +20,7 @@
</div> </div>
<?php echo template::mail('installMail', [ <?php echo template::mail('installMail', [
'autocomplete' => 'off', 'autocomplete' => 'off',
'label' => 'Adresse mail' 'label' => 'Adresse mail'
]); ?> ]); ?>
<div class="row"> <div class="row">
<div class="col6"> <div class="col6">
@ -41,7 +41,7 @@
<?php echo template::checkbox('installDefaultData',true , 'Charger un exemple de site', [ <?php echo template::checkbox('installDefaultData',true , 'Charger un exemple de site', [
'checked' => true 'checked' => true
]); ]);
?> ?>
</div> </div>
</div> </div>
<div class="row"> <div class="row">

View File

@ -24,8 +24,11 @@ class user extends common {
'logout' => self::GROUP_MEMBER, 'logout' => self::GROUP_MEMBER,
'reset' => self::GROUP_VISITOR 'reset' => self::GROUP_VISITOR
]; ];
public static $users = []; public static $users = [];
public static $userId = '';
/** /**
* Ajout * Ajout
*/ */
@ -373,7 +376,7 @@ class user extends common {
*/ */
} else { } else {
// Cas 4 : le délai de blocage est dépassé et le compte est au max - Réinitialiser // 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']) ) { AND $this->getData(['user',$userId,'connectFail']) === $this->getData(['config', 'connect', 'attempt']) ) {
$this->setData(['user',$userId,'connectFail',0 ]); $this->setData(['user',$userId,'connectFail',0 ]);
$this->setData(['user',$userId,'connectTimeout',0 ]); $this->setData(['user',$userId,'connectTimeout',0 ]);
@ -388,8 +391,8 @@ class user extends common {
) { ) {
// Expiration // Expiration
$expire = $this->getInput('userLoginLongTime') ? strtotime("+1 year") : 0; $expire = $this->getInput('userLoginLongTime') ? strtotime("+1 year") : 0;
setcookie('ZWII_USER_ID', $userId, $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), '', 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 // Accès multiples avec le même compte
$this->setData(['user',$userId,'accessCsrf',$_SESSION['csrf']]); $this->setData(['user',$userId,'accessCsrf',$_SESSION['csrf']]);
// Valeurs en sortie lorsque le site est en maintenance et que l'utilisateur n'est pas administrateur // 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 // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'display' => self::DISPLAY_LAYOUT_LIGHT, 'display' => self::DISPLAY_LAYOUT_LIGHT,
@ -454,7 +460,7 @@ class user extends common {
* Déconnexion * Déconnexion
*/ */
public function logout() { public function logout() {
helper::deleteCookie('ZWII_USER_ID'); // Ne pas effacer l'identifiant mais seulement le mot de passe
helper::deleteCookie('ZWII_USER_PASSWORD'); helper::deleteCookie('ZWII_USER_PASSWORD');
session_destroy(); session_destroy();
// Valeurs en sortie // Valeurs en sortie

View File

@ -2,7 +2,8 @@
<div class="row"> <div class="row">
<div class="col6"> <div class="col6">
<?php echo template::text('userLoginId', [ <?php echo template::text('userLoginId', [
'label' => 'Identifiant' 'label' => 'Identifiant',
'value' => $module::$userId
]); ?> ]); ?>
</div> </div>
<div class="col6"> <div class="col6">
@ -13,9 +14,7 @@
</div> </div>
<div class="row"> <div class="row">
<div class="col6"> <div class="col6">
<?php echo template::checkbox('userLoginLongTime', true, 'Se souvenir de moi', [ <?php echo template::checkbox('userLoginLongTime', true, 'Se souvenir de moi'); ?>
'help' => 'La session est close à la fermeture du navigateur.'
]); ?>
</div> </div>
<div class="col6 textAlignRight"> <div class="col6 textAlignRight">