13.3.06 Login, connexion persistante

This commit is contained in:
Fred Tempez 2024-08-24 17:29:17 +02:00
parent 3598ab2954
commit de0749b51b
3 changed files with 26 additions and 12 deletions

View File

@ -5,6 +5,7 @@
- Répare le bouton d'effacement en mode édition d'une page. - Répare le bouton d'effacement en mode édition d'une page.
- Corrige la feuille de style du slider les balises H1, H3 et A. - Corrige la feuille de style du slider les balises H1, H3 et A.
- Corrige l'absence de contenu de page lorsque le module est en position libre et que le mot clé [MODULE] n'a pas été inséré. - Corrige l'absence de contenu de page lorsque le module est en position libre et que le mot clé [MODULE] n'a pas été inséré.
- Corrige l'option "REster connecter sur ce navigateur' dont la connexion est désormais réellement persistente.
## Versions 13.3.05 ## Versions 13.3.05
** Corrections : ** ** Corrections : **

View File

@ -407,9 +407,9 @@ class helper
* @param string $cookieKey Clé du cookie à supprimer * @param string $cookieKey Clé du cookie à supprimer
*/ */
public static function deleteCookie($cookieKey) public static function deleteCookie($cookieKey)
{ {
unset($_COOKIE[$cookieKey]);
setcookie($cookieKey, '', time() - 3600, helper::baseUrl(false, false), '', false, true); setcookie($cookieKey, '', time() - 3600, helper::baseUrl(false, false), '', false, true);
unset($_COOKIE[$cookieKey]);
} }
/** /**

View File

@ -574,7 +574,7 @@ class user extends common
// Stoppe si le profil est affecté // Stoppe si le profil est affecté
foreach ($groups as $userId) { foreach ($groups as $userId) {
if ((string) $this->getData(['user', $userId, 'profil']) === $this->getUrl(3)) { if ((string) $this->getData(['user', $userId, 'profil']) === $this->getUrl(3)) {
$profilUsed= false; $profilUsed = false;
} }
} }
foreach ($this->getData(['profil']) as $groupId => $groupData) { foreach ($this->getData(['profil']) as $groupId => $groupData) {
@ -935,11 +935,11 @@ class user extends common
// recherche les membres du groupe // recherche les membres du groupe
$groups = helper::arrayColumn($this->getData(['user']), 'group'); $groups = helper::arrayColumn($this->getData(['user']), 'group');
$groups = array_keys($groups, $this->getUrl(2)); $groups = array_keys($groups, $this->getUrl(2));
$flag= true; $flag = true;
// Stoppe si le profil est affecté // Stoppe si le profil est affecté
foreach ($groups as $userId) { foreach ($groups as $userId) {
if ((string) $this->getData(['user', $userId, 'profil']) === $this->getUrl(3)) { if ((string) $this->getData(['user', $userId, 'profil']) === $this->getUrl(3)) {
$flag= false; $flag = false;
} }
} }
if ( if (
@ -956,7 +956,7 @@ class user extends common
if ($flag) { if ($flag) {
$this->deleteData(['profil', $this->getUrl(2), $this->getUrl(3)]); $this->deleteData(['profil', $this->getUrl(2), $this->getUrl(3)]);
} }
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(0) . '/profil', 'redirect' => helper::baseUrl() . $this->getUrl(0) . '/profil',
@ -1045,10 +1045,22 @@ class user extends common
// RAZ // RAZ
$this->setData(['user', $userId, 'connectFail', 0]); $this->setData(['user', $userId, 'connectFail', 0]);
$this->setData(['user', $userId, 'connectTimeout', 0]); $this->setData(['user', $userId, 'connectTimeout', 0]);
// Expiration
// Validité du cookie
$expire = $this->getInput('userLoginLongTime', helper::FILTER_BOOLEAN) === true ? strtotime("+1 year") : 0; $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); switch ($this->getInput('userLoginLongTime', helper::FILTER_BOOLEAN)) {
setcookie('ZWII_USER_PASSWORD', $this->getData(['user', $userId, 'password']), $expire, helper::baseUrl(false, false), '', helper::isHttps(), true); case false:
// Cookie de session
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);
break;
default:
// Cookie persistant
setcookie('ZWII_USER_ID', $userId, $expire, helper::baseUrl(false, false));
setcookie('ZWII_USER_PASSWORD', $this->getData(['user', $userId, 'password']), $expire, helper::baseUrl(false, false));
break;
}
// 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
@ -1064,8 +1076,9 @@ class user extends common
} else { } else {
$logStatus = 'Connexion réussie'; $logStatus = 'Connexion réussie';
$pageId = $this->getUrl(2); $pageId = $this->getUrl(2);
if ($this->getData(['config', 'page404']) === $pageId if (
|| $this->getData(['config', 'page403']) === $pageId $this->getData(['config', 'page404']) === $pageId
|| $this->getData(['config', 'page403']) === $pageId
) { ) {
$pageId = ''; $pageId = '';
} }
@ -1391,7 +1404,7 @@ class user extends common
// Ignorer les entrées de répertoire parent et actuel // Ignorer les entrées de répertoire parent et actuel
if ($file == '.' || $file == '..') { if ($file == '.' || $file == '..') {
continue; continue;
} }
// Construisez le chemin complet du fichier ou du répertoire // Construisez le chemin complet du fichier ou du répertoire
$path = $dir . '/' . $file; $path = $dir . '/' . $file;
// Vérifiez si c'est un répertoire // Vérifiez si c'est un répertoire