From 2ca70d4914f1b0a4920e22b1554466f4121ad8eb Mon Sep 17 00:00:00 2001
From: Bertrand GAUTHIER <bertrand.gauthier@unicaen.fr>
Date: Mon, 11 Oct 2021 10:40:36 +0200
Subject: [PATCH] =?UTF-8?q?[FIX]=20Donn=C3=A9es=20d'authentification=20:?=
 =?UTF-8?q?=20utilisation=20du=20SessionManager=20global=20pour=20avoir=20?=
 =?UTF-8?q?les=20dur=C3=A9es=20de=20conservation=20des=20cookies=20correct?=
 =?UTF-8?q?es.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 CHANGELOG.md                                                | 5 ++++-
 src/UnicaenAuth/Authentication/Storage/AuthFactory.php      | 6 +++++-
 src/UnicaenAuth/Authentication/Storage/DbFactory.php        | 6 +++++-
 src/UnicaenAuth/Authentication/Storage/LdapFactory.php      | 6 +++++-
 src/UnicaenAuth/Authentication/Storage/ShibFactory.php      | 6 +++++-
 .../Authentication/Storage/UsurpationFactory.php            | 6 +++++-
 6 files changed, 29 insertions(+), 6 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index e0f78ce..b5fc83d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,9 +1,12 @@
 CHANGELOG
 =========
 
-3.2.6 / 3.2.7
+3.2.8
 -----
+- [FIX] Données d'authentification : utilisation du SessionManager global pour avoir les durées de conservation des cookies correctes.
 
+3.2.6 / 3.2.7
+-----
 - Ajout d'un événement avec le détail des erreurs LDAP
 
 3.2.5
diff --git a/src/UnicaenAuth/Authentication/Storage/AuthFactory.php b/src/UnicaenAuth/Authentication/Storage/AuthFactory.php
index c652d3b..7dc7f0e 100644
--- a/src/UnicaenAuth/Authentication/Storage/AuthFactory.php
+++ b/src/UnicaenAuth/Authentication/Storage/AuthFactory.php
@@ -4,6 +4,7 @@ namespace UnicaenAuth\Authentication\Storage;
 
 use Interop\Container\ContainerInterface;
 use Zend\Authentication\Storage\Session;
+use Zend\Session\SessionManager;
 
 class AuthFactory
 {
@@ -14,8 +15,11 @@ class AuthFactory
      */
     public function __invoke(ContainerInterface $container, string $requestedName): Auth
     {
+        /** @var SessionManager $sessionManager */
+        $sessionManager = $container->get(SessionManager::class);
+
         $storage = new Auth();
-        $storage->setStorage(new Session(Usurpation::class));
+        $storage->setStorage(new Session(Usurpation::class, null, $sessionManager));
 
         return $storage;
     }
diff --git a/src/UnicaenAuth/Authentication/Storage/DbFactory.php b/src/UnicaenAuth/Authentication/Storage/DbFactory.php
index 59f8f1a..d027285 100644
--- a/src/UnicaenAuth/Authentication/Storage/DbFactory.php
+++ b/src/UnicaenAuth/Authentication/Storage/DbFactory.php
@@ -6,6 +6,7 @@ use Interop\Container\ContainerInterface;
 use UnicaenAuth\Authentication\Adapter\Db as DbAdapter;
 use UnicaenAuth\Options\ModuleOptions;
 use Zend\Authentication\Storage\Session;
+use Zend\Session\SessionManager;
 use ZfcUser\Mapper\UserInterface as UserMapper;
 
 class DbFactory
@@ -24,8 +25,11 @@ class DbFactory
         /** @var ModuleOptions $moduleOptions */
         $moduleOptions = $container->get('unicaen-auth_module_options');
 
+        /** @var SessionManager $sessionManager */
+        $sessionManager = $container->get(SessionManager::class);
+
         $storage = new Db();
-        $storage->setStorage(new Session(DbAdapter::class));
+        $storage->setStorage(new Session(DbAdapter::class, null, $sessionManager));
         $storage->setMapper($mapper);
         $storage->setModuleOptions($moduleOptions);
 
diff --git a/src/UnicaenAuth/Authentication/Storage/LdapFactory.php b/src/UnicaenAuth/Authentication/Storage/LdapFactory.php
index 0530e12..a891ba9 100644
--- a/src/UnicaenAuth/Authentication/Storage/LdapFactory.php
+++ b/src/UnicaenAuth/Authentication/Storage/LdapFactory.php
@@ -7,6 +7,7 @@ use UnicaenApp\Mapper\Ldap\People as LdapPeopleMapper;
 use UnicaenAuth\Authentication\Adapter\Ldap as LdapAdapter;
 use UnicaenAuth\Options\ModuleOptions;
 use Zend\Authentication\Storage\Session;
+use Zend\Session\SessionManager;
 
 class LdapFactory
 {
@@ -18,8 +19,11 @@ class LdapFactory
         /** @var ModuleOptions $moduleOptions */
         $moduleOptions = $container->get('unicaen-auth_module_options');
 
+        /** @var SessionManager $sessionManager */
+        $sessionManager = $container->get(SessionManager::class);
+
         $storage = new Ldap();
-        $storage->setStorage(new Session(LdapAdapter::class));
+        $storage->setStorage(new Session(LdapAdapter::class, null, $sessionManager));
         $storage->setMapper($mapper);
         $storage->setModuleOptions($moduleOptions);
 
diff --git a/src/UnicaenAuth/Authentication/Storage/ShibFactory.php b/src/UnicaenAuth/Authentication/Storage/ShibFactory.php
index 07f3c96..7a9a7b4 100644
--- a/src/UnicaenAuth/Authentication/Storage/ShibFactory.php
+++ b/src/UnicaenAuth/Authentication/Storage/ShibFactory.php
@@ -6,6 +6,7 @@ use Interop\Container\ContainerInterface;
 use UnicaenAuth\Options\ModuleOptions;
 use UnicaenAuth\Service\ShibService;
 use Zend\Authentication\Storage\Session;
+use Zend\Session\SessionManager;
 
 class ShibFactory
 {
@@ -23,8 +24,11 @@ class ShibFactory
         /** @var ModuleOptions $moduleOptions */
         $moduleOptions = $container->get('unicaen-auth_module_options');
 
+        /** @var SessionManager $sessionManager */
+        $sessionManager = $container->get(SessionManager::class);
+
         $storage = new Shib();
-        $storage->setStorage(new Session(\UnicaenAuth\Authentication\Adapter\Shib::class));
+        $storage->setStorage(new Session(\UnicaenAuth\Authentication\Adapter\Shib::class, null, $sessionManager));
         $storage->setShibService($shibService);
         $storage->setModuleOptions($moduleOptions);
 
diff --git a/src/UnicaenAuth/Authentication/Storage/UsurpationFactory.php b/src/UnicaenAuth/Authentication/Storage/UsurpationFactory.php
index 80be0ae..b1faf80 100644
--- a/src/UnicaenAuth/Authentication/Storage/UsurpationFactory.php
+++ b/src/UnicaenAuth/Authentication/Storage/UsurpationFactory.php
@@ -5,6 +5,7 @@ namespace UnicaenAuth\Authentication\Storage;
 use Interop\Container\ContainerInterface;
 use UnicaenAuth\Options\ModuleOptions;
 use Zend\Authentication\Storage\Session;
+use Zend\Session\SessionManager;
 use ZfcUser\Mapper\UserInterface as UserMapper;
 
 class UsurpationFactory
@@ -23,8 +24,11 @@ class UsurpationFactory
         /** @var ModuleOptions $moduleOptions */
         $moduleOptions = $container->get('unicaen-auth_module_options');
 
+        /** @var SessionManager $sessionManager */
+        $sessionManager = $container->get(SessionManager::class);
+
         $storage = new Usurpation();
-        $storage->setStorage(new Session(Usurpation::class));
+        $storage->setStorage(new Session(Usurpation::class, null, $sessionManager));
         $storage->setMapper($mapper);
         $storage->setModuleOptions($moduleOptions);
 
-- 
GitLab