From 943a4dddf8ba2d2b4cb0427d1d7df1a8cf07a2bd Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Thu, 28 May 2020 09:28:10 +0200 Subject: [PATCH] =?UTF-8?q?10.2.dev10=20timer=20sur=20le=20controle=20d'ac?= =?UTF-8?q?c=C3=A8s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/core.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/core/core.php b/core/core.php index de132d7b..1192dd54 100755 --- a/core/core.php +++ b/core/core.php @@ -35,8 +35,11 @@ class common { const THUMBS_SEPARATOR = 'mini_'; const THUMBS_WIDTH = 640; + // Contrôle d'édition temps max en secondes. + const ACCESS_TIMER = 360; + // Numéro de version - const ZWII_VERSION = '10.2.00.dev9'; + const ZWII_VERSION = '10.2.00.dev10'; const ZWII_UPDATE_CHANNEL = "v10"; public static $actions = []; @@ -1609,6 +1612,7 @@ class core extends common { // Check l'accès à la page $access = null; $accessInfo['userName'] = ''; + $accessInfo['pageId'] = ''; if($this->getData(['page', $this->getUrl(0)]) !== null) { if( $this->getData(['page', $this->getUrl(0), 'group']) === self::GROUP_VISITOR @@ -1635,20 +1639,25 @@ class core extends common { * - Les deux utilisateurs qui accèdent à la même page sont différents * - les URLS sont identiques * - Une partie de l'URL fait partie de la liste de filtrage (édition d'un module etc..) + * - L'édition est ouverte depuis un temps dépassé, on considère que la page est restée ouverte et qu'elle ne sera pas validée */ foreach($this->getData(['user']) as $userId => $userIds){ $t = explode('/',$this->getData(['user', $userId, 'accessUrl'])); if ( $userId !== $this->getuser('id') && $this->getData(['user', $userId,'accessUrl']) === $this->getUrl() && array_intersect($t,self::$accessList) && - array_intersect($t,self::$accessExclude) === false ) { + array_intersect($t,self::$accessExclude) !== false && + time() < $this->getData(['user', $userId,'accessTimer']) + self::ACCESS_TIMER + ) { $access = false; $accessInfo['userName'] = $this->getData(['user', $userId, 'lastname']) . ' ' . $this->getData(['user', $userId, 'firstname']); + $accessInfo['pageId'] = end($t); } } // Accès concurrent stocke la page visitée if ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')) { $this->setData(['user',$this->getuser('id'),'accessUrl',$this->getUrl()]); + $this->setData(['user',$this->getuser('id'),'accessTimer',time()]); } // Breadcrumb @@ -1870,7 +1879,7 @@ class core extends common { if ($accessInfo['userName']) { $this->addOutput([ 'title' => 'Accès verrouillé', - 'content' => template::speech('La page demandée est ouverte par l\'utilisateur ' . $accessInfo['userName'] . '') + 'content' => template::speech('La page ' . $accessInfo['pageId'] . ' est ouverte par l\'utilisateur ' . $accessInfo['userName'] . '') ]); } else { $this->addOutput([