From bd271be72a170ab3b550f51f8118ec36eceea853 Mon Sep 17 00:00:00 2001
From: Bertrand Gauthier <bertrand.gauthier@unicaen.fr>
Date: Wed, 28 Mar 2018 10:19:16 +0200
Subject: [PATCH] =?UTF-8?q?Shibboleth:=20l'id=20mis=20en=20session=20ne=20?=
 =?UTF-8?q?peut=20=C3=AAtre=20le=20supannEmpId/supannEtuId=20car=20le=20st?=
 =?UTF-8?q?orage=20Ldap=20peut=20trouver=20un=20compte=20correspondant=20;?=
 =?UTF-8?q?=20prise=20en=20compte=20d'attributs=20suppl=C3=A9mentaires=20(?=
 =?UTF-8?q?nom,=20pr=C3=A9nom,=20civilit=C3=A9)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/UnicaenAuth/Controller/AuthController.php |  2 +-
 .../Entity/Shibboleth/ShibUser.php            |  8 +++---
 src/UnicaenAuth/Service/ShibService.php       | 25 ++++++++++++++++++-
 3 files changed, 29 insertions(+), 6 deletions(-)

diff --git a/src/UnicaenAuth/Controller/AuthController.php b/src/UnicaenAuth/Controller/AuthController.php
index d3b468c..0bec823 100644
--- a/src/UnicaenAuth/Controller/AuthController.php
+++ b/src/UnicaenAuth/Controller/AuthController.php
@@ -54,7 +54,7 @@ class AuthController extends AbstractActionController
         /** @var AuthenticationService $authService */
         $authService = $this->getServiceLocator()->get('zfcuser_auth_service');
         try {
-            $authService->getStorage()->write($shibUser->getId());
+            $authService->getStorage()->write($shibUser->getUsername());
         } catch (ExceptionInterface $e) {
             throw new RuntimeException("Impossible d'écrire dans le storage");
         }
diff --git a/src/UnicaenAuth/Entity/Shibboleth/ShibUser.php b/src/UnicaenAuth/Entity/Shibboleth/ShibUser.php
index 82c4114..b0c785c 100644
--- a/src/UnicaenAuth/Entity/Shibboleth/ShibUser.php
+++ b/src/UnicaenAuth/Entity/Shibboleth/ShibUser.php
@@ -156,7 +156,7 @@ class ShibUser implements UserInterface
      */
     public function getPrenom()
     {
-        return $this->givenName;
+        return $this->prenom;
     }
 
     /**
@@ -168,7 +168,7 @@ class ShibUser implements UserInterface
     }
 
     /**
-     * @return string
+     * @return string|null
      */
     public function getCivilite()
     {
@@ -176,9 +176,9 @@ class ShibUser implements UserInterface
     }
 
     /**
-     * @param string $civilite
+     * @param string|null $civilite
      */
-    public function setCivilite($civilite)
+    public function setCivilite($civilite = null)
     {
         $this->civilite = $civilite;
     }
diff --git a/src/UnicaenAuth/Service/ShibService.php b/src/UnicaenAuth/Service/ShibService.php
index 902e3f5..d473dbf 100644
--- a/src/UnicaenAuth/Service/ShibService.php
+++ b/src/UnicaenAuth/Service/ShibService.php
@@ -81,7 +81,7 @@ EOS;
         } elseif (isset($_SERVER['supannEmpId'])) {
             $id = $_SERVER['supannEmpId'];
         } else {
-            throw new RuntimeException('Un au moins des attributs suivants doivent exister dans $_SERVER : supannEtuId, supannEmpId.');
+            throw new RuntimeException('Un au moins des attributs suivants doit exister dans $_SERVER : supannEtuId, supannEmpId.');
         }
 
         $mail = null;
@@ -94,11 +94,34 @@ EOS;
             $displayName = $_SERVER['displayName'];
         }
 
+        $surname = null;
+        if (isset($_SERVER['sn'])) {
+            $surname = $_SERVER['sn'];
+        } elseif (isset($_SERVER['surname'])) {
+            $surname = $_SERVER['surname'];
+        }
+
+        $givenName = null;
+        if (isset($_SERVER['givenName'])) {
+            $givenName = $_SERVER['givenName'];
+        }
+
+        $civilite = null;
+        if (isset($_SERVER['supannCivilite'])) {
+            $civilite = $_SERVER['supannCivilite'];
+        }
+
         $shibUser = new ShibUser();
+        // propriétés de UserInterface
         $shibUser->setId($id);
         $shibUser->setUsername($eppn);
         $shibUser->setDisplayName($displayName);
         $shibUser->setEmail($mail);
+        $shibUser->setPassword(null);
+        // autres propriétés
+        $shibUser->setNom($surname);
+        $shibUser->setPrenom($givenName);
+        $shibUser->setCivilite($civilite);
 
         return $shibUser;
     }
-- 
GitLab