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
- 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 :

View File

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

View File

@ -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

View File

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