Loading module/Application/src/Application/Event/UserAuthenticatedEventListener.php +16 −4 Original line number Diff line number Diff line Loading @@ -3,11 +3,11 @@ namespace Application\Event; use Application\Entity\Db\Utilisateur; use Application\Entity\UserWrapper; use Application\Entity\UserWrapperFactory; use Application\Service\Etablissement\EtablissementServiceAwareTrait; use Application\Service\Individu\IndividuServiceAwareTrait; use Application\Service\Utilisateur\UtilisateurServiceAwareTrait; use Application\SourceCodeStringHelper; use UnicaenAuth\Event\Listener\AuthenticatedUserSavedAbstractListener; use UnicaenAuth\Event\UserAuthenticatedEvent; use UnicaenAuth\Service\UserContext as UserContextService; Loading Loading @@ -63,21 +63,33 @@ class UserAuthenticatedEventListener extends AuthenticatedUserSavedAbstractListe $userWrapperFactory = new UserWrapperFactory(); $userWrapper = $userWrapperFactory->createInstanceFromUserAuthenticatedEvent($e); $individuUpdateRequired = true; if ($userWrapper->getIndividu() !== null) { $individu = $userWrapper->getIndividu(); } else { $domaineEtab = $userWrapper->getDomainFromEppn(); $etablissement = $this->getEtablissementService()->getRepository()->findOneByDomaine($domaineEtab); // création de l'Individu si besoin $sourceCode = $etablissement->prependPrefixTo($userWrapper->getSupannId()); // recherche de l'Individu correspondant à l'utilisateur $sourceCodeHelper = new SourceCodeStringHelper(); $sourceCode = $sourceCodeHelper->addPrefixEtablissementTo($userWrapper->getSupannId(), $etablissement); $individu = $this->individuService->getRepository()->findOneBySourceCode($sourceCode); // création de l'Individu si inexistant if (null === $individu) { $createur = $this->utilisateurService->getRepository()->fetchAppPseudoUser(); $individu = $this->individuService->createFromUserWrapperAndEtab($userWrapper, $etablissement, $createur); $individu = $this->individuService->createIndividuFromUserWrapperAndEtab($userWrapper, $etablissement, $createur); $individuUpdateRequired = false; } } // mise à jour éventuelle de l'Individu à partir des données d'identité if ($individuUpdateRequired) { $modificateur = $this->utilisateurService->getRepository()->fetchAppPseudoUser(); $this->individuService->updateIndividuFromUserWrapper($individu, $userWrapper, $modificateur); } // renseigne le lien utilisateur-->individu /** @var Utilisateur $utilisateur */ $utilisateur = $e->getDbUser(); Loading module/Application/src/Application/Service/Individu/IndividuService.php +27 −2 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ class IndividuService extends BaseService * @return Individu * @deprecated À supprimer car non utilisée */ public function createFromPeopleAndEtab(People $people, Etablissement $etablissement) public function createIndividuFromPeopleAndEtab(People $people, Etablissement $etablissement) { $sns = (array)$people->get('sn'); $usuel = array_pop($sns); Loading Loading @@ -63,7 +63,7 @@ class IndividuService extends BaseService * @param Utilisateur $utilisateur Auteur éventuel de la création * @return Individu */ public function createFromUserWrapperAndEtab(UserWrapper $userWrapper, public function createIndividuFromUserWrapperAndEtab(UserWrapper $userWrapper, Etablissement $etablissement, Utilisateur $utilisateur = null) { Loading @@ -89,6 +89,31 @@ class IndividuService extends BaseService return $entity; } /** * @param Individu $entity * @param UserWrapper $userWrapper * @param Utilisateur $utilisateur */ public function updateIndividuFromUserWrapper(Individu $entity, UserWrapper $userWrapper, Utilisateur $utilisateur) { $entity->setSupannId($userWrapper->getSupannId()); $entity->setNomUsuel($userWrapper->getNom() ?: "X"); // NB: le nom est obligatoire mais quid si indisponible ? $entity->setNomPatronymique($userWrapper->getNom()); $entity->setPrenom($userWrapper->getPrenom()); $entity->setCivilite($userWrapper->getCivilite()); $entity->setEmail($userWrapper->getEmail()); $entity->setHistoModificateur($utilisateur); $this->getEntityManager()->persist($entity); try { $this->getEntityManager()->flush($entity); } catch (OptimisticLockException $e) { throw new RuntimeException("Impossible d'enregistrer l'Individu", null, $e); } } public function existIndividuUtilisateurByEmail($email) { $exist_individu = $this->getEntityManager()->getRepository(Individu::class)->findOneBy(["email" => $email]); $exist_utilisateur = $this->getEntityManager()->getRepository(Utilisateur::class)->findOneBy(["email" => $email]); Loading Loading
module/Application/src/Application/Event/UserAuthenticatedEventListener.php +16 −4 Original line number Diff line number Diff line Loading @@ -3,11 +3,11 @@ namespace Application\Event; use Application\Entity\Db\Utilisateur; use Application\Entity\UserWrapper; use Application\Entity\UserWrapperFactory; use Application\Service\Etablissement\EtablissementServiceAwareTrait; use Application\Service\Individu\IndividuServiceAwareTrait; use Application\Service\Utilisateur\UtilisateurServiceAwareTrait; use Application\SourceCodeStringHelper; use UnicaenAuth\Event\Listener\AuthenticatedUserSavedAbstractListener; use UnicaenAuth\Event\UserAuthenticatedEvent; use UnicaenAuth\Service\UserContext as UserContextService; Loading Loading @@ -63,21 +63,33 @@ class UserAuthenticatedEventListener extends AuthenticatedUserSavedAbstractListe $userWrapperFactory = new UserWrapperFactory(); $userWrapper = $userWrapperFactory->createInstanceFromUserAuthenticatedEvent($e); $individuUpdateRequired = true; if ($userWrapper->getIndividu() !== null) { $individu = $userWrapper->getIndividu(); } else { $domaineEtab = $userWrapper->getDomainFromEppn(); $etablissement = $this->getEtablissementService()->getRepository()->findOneByDomaine($domaineEtab); // création de l'Individu si besoin $sourceCode = $etablissement->prependPrefixTo($userWrapper->getSupannId()); // recherche de l'Individu correspondant à l'utilisateur $sourceCodeHelper = new SourceCodeStringHelper(); $sourceCode = $sourceCodeHelper->addPrefixEtablissementTo($userWrapper->getSupannId(), $etablissement); $individu = $this->individuService->getRepository()->findOneBySourceCode($sourceCode); // création de l'Individu si inexistant if (null === $individu) { $createur = $this->utilisateurService->getRepository()->fetchAppPseudoUser(); $individu = $this->individuService->createFromUserWrapperAndEtab($userWrapper, $etablissement, $createur); $individu = $this->individuService->createIndividuFromUserWrapperAndEtab($userWrapper, $etablissement, $createur); $individuUpdateRequired = false; } } // mise à jour éventuelle de l'Individu à partir des données d'identité if ($individuUpdateRequired) { $modificateur = $this->utilisateurService->getRepository()->fetchAppPseudoUser(); $this->individuService->updateIndividuFromUserWrapper($individu, $userWrapper, $modificateur); } // renseigne le lien utilisateur-->individu /** @var Utilisateur $utilisateur */ $utilisateur = $e->getDbUser(); Loading
module/Application/src/Application/Service/Individu/IndividuService.php +27 −2 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ class IndividuService extends BaseService * @return Individu * @deprecated À supprimer car non utilisée */ public function createFromPeopleAndEtab(People $people, Etablissement $etablissement) public function createIndividuFromPeopleAndEtab(People $people, Etablissement $etablissement) { $sns = (array)$people->get('sn'); $usuel = array_pop($sns); Loading Loading @@ -63,7 +63,7 @@ class IndividuService extends BaseService * @param Utilisateur $utilisateur Auteur éventuel de la création * @return Individu */ public function createFromUserWrapperAndEtab(UserWrapper $userWrapper, public function createIndividuFromUserWrapperAndEtab(UserWrapper $userWrapper, Etablissement $etablissement, Utilisateur $utilisateur = null) { Loading @@ -89,6 +89,31 @@ class IndividuService extends BaseService return $entity; } /** * @param Individu $entity * @param UserWrapper $userWrapper * @param Utilisateur $utilisateur */ public function updateIndividuFromUserWrapper(Individu $entity, UserWrapper $userWrapper, Utilisateur $utilisateur) { $entity->setSupannId($userWrapper->getSupannId()); $entity->setNomUsuel($userWrapper->getNom() ?: "X"); // NB: le nom est obligatoire mais quid si indisponible ? $entity->setNomPatronymique($userWrapper->getNom()); $entity->setPrenom($userWrapper->getPrenom()); $entity->setCivilite($userWrapper->getCivilite()); $entity->setEmail($userWrapper->getEmail()); $entity->setHistoModificateur($utilisateur); $this->getEntityManager()->persist($entity); try { $this->getEntityManager()->flush($entity); } catch (OptimisticLockException $e) { throw new RuntimeException("Impossible d'enregistrer l'Individu", null, $e); } } public function existIndividuUtilisateurByEmail($email) { $exist_individu = $this->getEntityManager()->getRepository(Individu::class)->findOneBy(["email" => $email]); $exist_utilisateur = $this->getEntityManager()->getRepository(Utilisateur::class)->findOneBy(["email" => $email]); Loading