From 143ee898b9f6b00b363a9e44750b6fed52496e37 Mon Sep 17 00:00:00 2001
From: efalcy <efalcy@afi-sa.fr>
Date: Thu, 12 Mar 2020 15:21:22 +0100
Subject: [PATCH] hotline#107675 fix birth date  to null

---
 VERSIONS_HOTLINE/107675                                    | 1 +
 library/Class/Users.php                                    | 6 +++++-
 library/digital_resources/LesYeuxDoc/Config.php            | 2 +-
 .../modules/admin/controllers/UsersControllerTest.php      | 7 +++++++
 4 files changed, 14 insertions(+), 2 deletions(-)
 create mode 100644 VERSIONS_HOTLINE/107675

diff --git a/VERSIONS_HOTLINE/107675 b/VERSIONS_HOTLINE/107675
new file mode 100644
index 00000000000..7354602eeb7
--- /dev/null
+++ b/VERSIONS_HOTLINE/107675
@@ -0,0 +1 @@
+ - ticket #107675 : Ressources numériques : Correction d'une erreur lors du SSO de certains fournisseurs utilisant les dates de naissance
\ No newline at end of file
diff --git a/library/Class/Users.php b/library/Class/Users.php
index 8f6a8558eb0..cd5326d0c29 100644
--- a/library/Class/Users.php
+++ b/library/Class/Users.php
@@ -469,7 +469,7 @@ class Class_Users extends Storm_Model_Abstract {
                                   'role_level' => 0,
                                   'idabon' => '',
                                   'date_fin' => '',
-                                  'naissance' => '',
+                                  'naissance' => null,
                                   'date_debut' => '',
                                   'telephone' => '',
                                   'mail' => '',
@@ -1376,6 +1376,10 @@ class Class_Users extends Storm_Model_Abstract {
                       ->getCurrentDateFormatInYmdHMS());
 
     $this->setPassword((new Class_User_Password($this))->format());
+
+    if (null !== ($naissance = $this->getNaissance())
+        && false === strtotime($naissance))
+      $this->setNaissance(null);
   }
 
 
diff --git a/library/digital_resources/LesYeuxDoc/Config.php b/library/digital_resources/LesYeuxDoc/Config.php
index cc06a43099c..e5078e3b17e 100644
--- a/library/digital_resources/LesYeuxDoc/Config.php
+++ b/library/digital_resources/LesYeuxDoc/Config.php
@@ -88,7 +88,7 @@ class LesYeuxDoc_Config extends Class_DigitalResource_Config {
                'prenom' => $user->getPrenom(),
                'nom' => $user->getNom(),
                'email' => $user->getMail(),
-               'dnaiss' => $user->getNaissance(),
+               'dnaiss' => ($date = $user->getNaissance()) ? $date : '',
                'datout' => $user->getDateFin(),
                'return_url' => $return_url];
 
diff --git a/tests/application/modules/admin/controllers/UsersControllerTest.php b/tests/application/modules/admin/controllers/UsersControllerTest.php
index 5ee4783b93a..60bd4807401 100644
--- a/tests/application/modules/admin/controllers/UsersControllerTest.php
+++ b/tests/application/modules/admin/controllers/UsersControllerTest.php
@@ -864,6 +864,13 @@ class UsersControllerAddActionPostTest extends UsersControllerWithMarcusTestCase
   }
 
 
+  /** @test */
+  public function birthDateShouldBeNull() {
+    $this->_postData();
+    $this->assertNull(Class_Users::findFirstBy(['login' => 'mdavis'])->getNaissance());
+  }
+
+
   /** @test */
   public function existingLoginShouldReturnError() {
     $this->user_loader
-- 
GitLab