Loading src/UnicaenUtilisateur/ORM/Event/Listeners/HistoriqueListener.php +9 −15 Original line number Diff line number Diff line Loading @@ -8,13 +8,12 @@ use Doctrine\ORM\Event\LifecycleEventArgs; use Doctrine\ORM\Event\PreUpdateEventArgs; use Doctrine\ORM\Events; use Exception; use Laminas\Authentication\AuthenticationService; use RuntimeException; use UnicaenUtilisateur\Entity\HistoriqueAwareInterface; use UnicaenApp\Service\EntityManagerAwareTrait; use UnicaenUtilisateur\Entity\Db\AbstractUser; use UnicaenUtilisateur\Entity\Db\User; use UnicaenUtilisateur\Entity\Db\UserInterface; use UnicaenUtilisateur\Service\User\UserServiceAwareTrait; use Laminas\Authentication\AuthenticationService; use UnicaenUtilisateur\Entity\HistoriqueAwareInterface; use UnicaenUtilisateur\Service\User\UserService; /** * Listener Doctrine. Loading @@ -31,10 +30,7 @@ use Laminas\Authentication\AuthenticationService; */ class HistoriqueListener implements EventSubscriber { use UserServiceAwareTrait; private ?int $defaultUser = null; public function setDefaultUser(?int $user) { $this->defaultUser = $user; } use EntityManagerAwareTrait; /** * @var AuthenticationService Loading Loading @@ -81,10 +77,8 @@ class HistoriqueListener implements EventSubscriber // on tente d'abord d'obtenir l'utilisateur connecté pour en faire l'auteur de la création/modification. $user = $this->getAuthenticatedUser(); // si aucun utilisateur connecté n'est disponible, on utilise l'éventuel auteur existant if (null === $user) { $user = $entity->getHistoCreateur(); } // si nous ne disposons d'aucun utilisateur, basta! if (null === $user) $user = $entity->getHistoCreateur(); // if (null === $user) $user = $this->authenticationService->getEntityManager()->getRepository(UserService::class)->find(0); if (null === $user) { if ($this->defaultUser) { $user = new User(); $user->setId($this->defaultUser); Loading src/UnicaenUtilisateur/ORM/Event/Listeners/HistoriqueListenerFactory.php +2 −5 Original line number Diff line number Diff line Loading @@ -3,11 +3,9 @@ namespace UnicaenUtilisateur\ORM\Event\Listeners; use Interop\Container\ContainerInterface; use Laminas\Authentication\AuthenticationService; use Laminas\ServiceManager\FactoryInterface; use Laminas\ServiceManager\ServiceLocatorInterface; use Laminas\Authentication\AuthenticationService; use UnicaenUtilisateur\Entity\Db\User; use UnicaenUtilisateur\Service\User\UserService; /** * Description of MouchardServiceFactory Loading @@ -31,8 +29,7 @@ class HistoriqueListenerFactory implements FactoryInterface $listener = new HistoriqueListener(); $listener->setAuthenticationService($authenticationService); $listener->setDefaultUser($userId); // $listener->setDefaultUser($user); //$listener->setEntityManager($entityManager); return $listener; } Loading src/UnicaenUtilisateur/Service/User/UserService.php +29 −21 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ class UserService extends CommonService implements RechercheIndividuServiceInter */ private $authenticationService; private ?string $applicationUsername; /** * @param string $userEntityClass Loading Loading @@ -85,7 +86,34 @@ class UserService extends CommonService implements RechercheIndividuServiceInter } /** * @return UserInterface[] * @return string|null */ public function getApplicationUsername(): ?string { return $this->applicationUsername; } /** * @param string|null $applicationUsername * @return UserService */ public function setApplicationUsername(?string $applicationUsername): UserService { $this->applicationUsername = $applicationUsername; return $this; } /** * @return EntityRepository */ public function getRepo() { return $this->getEntityManager()->getRepository($this->userEntityClass); } /** * @param mixed $id * @return UserInterface|null */ public function findAll(array $orderBy = ['displayName' => 'ASC']) { Loading Loading @@ -364,26 +392,6 @@ class UserService extends CommonService implements RechercheIndividuServiceInter return $utilisateur; } /** * @return \Laminas\Permissions\Acl\Role\RoleInterface|null */ public function getConnectedRole() { $userRole = $utilisateur->getFullRole($role); $repo = $this->getEntityManager()->getRepository($this->userRolePerimetreEntityClass); $entity = $repo->findOneBy(['userRole' => $userRole, 'perimetre' => $perimetre]); try { $this->getEntityManager()->remove($entity); $this->getEntityManager()->flush($entity); } catch (\Exception $e) { throw new RuntimeException("Un problème est survenu lors de la suppression du périmètre \"" . $perimetre->getLibelle() . "\" à l'utilisateur " . $utilisateur->getUsername() . ".", null, $e); } return $utilisateur; } /** * @param UserInterface $utilisateur */ Loading src/UnicaenUtilisateur/Service/User/UserServiceFactory.php +4 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,10 @@ class UserServiceFactory $service = new UserService(); $service->setEntityManager($entityManager); $service->setRoleService($roleService); $service->setServiceUserContext($userContext); $service->setUserEntityClass($allConfig['zfcuser']['user_entity_class'] ?? User::class); $service->setApplicationUsername($allConfig['unicaen-utilisateur']['application-username']); $service->setAuthenticationService($authenticationService); $service->setEntityClass($userEntityClass); $service->setUserRoleEntityClass($userRoleEntityClass); Loading Loading
src/UnicaenUtilisateur/ORM/Event/Listeners/HistoriqueListener.php +9 −15 Original line number Diff line number Diff line Loading @@ -8,13 +8,12 @@ use Doctrine\ORM\Event\LifecycleEventArgs; use Doctrine\ORM\Event\PreUpdateEventArgs; use Doctrine\ORM\Events; use Exception; use Laminas\Authentication\AuthenticationService; use RuntimeException; use UnicaenUtilisateur\Entity\HistoriqueAwareInterface; use UnicaenApp\Service\EntityManagerAwareTrait; use UnicaenUtilisateur\Entity\Db\AbstractUser; use UnicaenUtilisateur\Entity\Db\User; use UnicaenUtilisateur\Entity\Db\UserInterface; use UnicaenUtilisateur\Service\User\UserServiceAwareTrait; use Laminas\Authentication\AuthenticationService; use UnicaenUtilisateur\Entity\HistoriqueAwareInterface; use UnicaenUtilisateur\Service\User\UserService; /** * Listener Doctrine. Loading @@ -31,10 +30,7 @@ use Laminas\Authentication\AuthenticationService; */ class HistoriqueListener implements EventSubscriber { use UserServiceAwareTrait; private ?int $defaultUser = null; public function setDefaultUser(?int $user) { $this->defaultUser = $user; } use EntityManagerAwareTrait; /** * @var AuthenticationService Loading Loading @@ -81,10 +77,8 @@ class HistoriqueListener implements EventSubscriber // on tente d'abord d'obtenir l'utilisateur connecté pour en faire l'auteur de la création/modification. $user = $this->getAuthenticatedUser(); // si aucun utilisateur connecté n'est disponible, on utilise l'éventuel auteur existant if (null === $user) { $user = $entity->getHistoCreateur(); } // si nous ne disposons d'aucun utilisateur, basta! if (null === $user) $user = $entity->getHistoCreateur(); // if (null === $user) $user = $this->authenticationService->getEntityManager()->getRepository(UserService::class)->find(0); if (null === $user) { if ($this->defaultUser) { $user = new User(); $user->setId($this->defaultUser); Loading
src/UnicaenUtilisateur/ORM/Event/Listeners/HistoriqueListenerFactory.php +2 −5 Original line number Diff line number Diff line Loading @@ -3,11 +3,9 @@ namespace UnicaenUtilisateur\ORM\Event\Listeners; use Interop\Container\ContainerInterface; use Laminas\Authentication\AuthenticationService; use Laminas\ServiceManager\FactoryInterface; use Laminas\ServiceManager\ServiceLocatorInterface; use Laminas\Authentication\AuthenticationService; use UnicaenUtilisateur\Entity\Db\User; use UnicaenUtilisateur\Service\User\UserService; /** * Description of MouchardServiceFactory Loading @@ -31,8 +29,7 @@ class HistoriqueListenerFactory implements FactoryInterface $listener = new HistoriqueListener(); $listener->setAuthenticationService($authenticationService); $listener->setDefaultUser($userId); // $listener->setDefaultUser($user); //$listener->setEntityManager($entityManager); return $listener; } Loading
src/UnicaenUtilisateur/Service/User/UserService.php +29 −21 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ class UserService extends CommonService implements RechercheIndividuServiceInter */ private $authenticationService; private ?string $applicationUsername; /** * @param string $userEntityClass Loading Loading @@ -85,7 +86,34 @@ class UserService extends CommonService implements RechercheIndividuServiceInter } /** * @return UserInterface[] * @return string|null */ public function getApplicationUsername(): ?string { return $this->applicationUsername; } /** * @param string|null $applicationUsername * @return UserService */ public function setApplicationUsername(?string $applicationUsername): UserService { $this->applicationUsername = $applicationUsername; return $this; } /** * @return EntityRepository */ public function getRepo() { return $this->getEntityManager()->getRepository($this->userEntityClass); } /** * @param mixed $id * @return UserInterface|null */ public function findAll(array $orderBy = ['displayName' => 'ASC']) { Loading Loading @@ -364,26 +392,6 @@ class UserService extends CommonService implements RechercheIndividuServiceInter return $utilisateur; } /** * @return \Laminas\Permissions\Acl\Role\RoleInterface|null */ public function getConnectedRole() { $userRole = $utilisateur->getFullRole($role); $repo = $this->getEntityManager()->getRepository($this->userRolePerimetreEntityClass); $entity = $repo->findOneBy(['userRole' => $userRole, 'perimetre' => $perimetre]); try { $this->getEntityManager()->remove($entity); $this->getEntityManager()->flush($entity); } catch (\Exception $e) { throw new RuntimeException("Un problème est survenu lors de la suppression du périmètre \"" . $perimetre->getLibelle() . "\" à l'utilisateur " . $utilisateur->getUsername() . ".", null, $e); } return $utilisateur; } /** * @param UserInterface $utilisateur */ Loading
src/UnicaenUtilisateur/Service/User/UserServiceFactory.php +4 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,10 @@ class UserServiceFactory $service = new UserService(); $service->setEntityManager($entityManager); $service->setRoleService($roleService); $service->setServiceUserContext($userContext); $service->setUserEntityClass($allConfig['zfcuser']['user_entity_class'] ?? User::class); $service->setApplicationUsername($allConfig['unicaen-utilisateur']['application-username']); $service->setAuthenticationService($authenticationService); $service->setEntityClass($userEntityClass); $service->setUserRoleEntityClass($userRoleEntityClass); Loading