From 61e43dcd987a6ce1928b63b5e88239cabb52b3da Mon Sep 17 00:00:00 2001 From: Charles Date: Thu, 7 Aug 2025 15:01:59 +0200 Subject: [PATCH] Log action --- src/Service/UserOrganizationService.php | 33 ++++++++++++++++++++----- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/src/Service/UserOrganizationService.php b/src/Service/UserOrganizationService.php index 5adb4f5..b2d37e6 100644 --- a/src/Service/UserOrganizationService.php +++ b/src/Service/UserOrganizationService.php @@ -7,9 +7,11 @@ use App\Entity\Apps; use App\Entity\Organizations; use App\Entity\Roles; use App\Entity\User; +use App\Service\ActionService; use App\Service\UserService; use App\Entity\UsersOrganizations; use Doctrine\ORM\EntityManagerInterface; +use Symfony\Bundle\SecurityBundle\Security; /** * Service pour la gestion des organisations d'utilisateurs. @@ -23,7 +25,9 @@ readonly class UserOrganizationService * @param EntityManagerInterface $entityManager Le gestionnaire d'entités Doctrine */ public function __construct(private readonly EntityManagerInterface $entityManager, - private readonly UserService $userService) + private readonly UserService $userService, + private ActionService $actionService, + private readonly Security $security) { } @@ -299,6 +303,14 @@ readonly class UserOrganizationService foreach ($uoEntity->getApps()->toArray() as $existingApp) { if (!in_array($existingApp->getId(), $selectedApps)) { $uoEntity->removeApp($existingApp); + //Log action + $actingUser = $this->security->getUser()->getUserIdentifier(); + $actingUser = $this->entityManager->getRepository(User::class)->findOneBy(['email' => $actingUser]); + $this->actionService->createAction("Mise à jour des applications", + $actingUser, + $uoEntity->getOrganization(), + "{$actingUser->getIdentifier()} a retiré les droits d'accès à {$existingApp->getName()} à + {$uoEntity->getUsers()->getUserIdentifier()} pour l'organisation {$uoEntity->getOrganization()->getName()}"); } } } @@ -314,6 +326,13 @@ readonly class UserOrganizationService $appEntity = $this->entityManager->getRepository(Apps::class)->find($appId); if ($appEntity && !$uoEntity->getApps()->contains($appEntity)) { $uoEntity->addApp($appEntity); + $actingUser = $this->security->getUser()->getUserIdentifier(); + $actingUser = $this->entityManager->getRepository(User::class)->findOneBy(['email' => $actingUser]); + $this->actionService->createAction("Mise à jour des applications", + $actingUser, + $uoEntity->getOrganization(), + "{$actingUser->getIdentifier()} a donné les droits d'accès à {$appEntity->getName()} à + {$uoEntity->getUsers()->getUserIdentifier()} pour l'organisation {$uoEntity->getOrganization()->getName()}"); } } } @@ -335,11 +354,13 @@ readonly class UserOrganizationService foreach ($userOrganizations as $uo) { $uo->setIsActive(false); //Log action - $action = new Actions(); - $action->setActionType("Désactivation role" ); - $action->setDescription("Désactivation du rôle " . $uo->getRole()->getName() . " pour l'utilisateur " . $user->getUserIdentifier() . " dans l'organisation " . $organization->getName()); - $action->setOrganization($organization); - $action->setUsers($user); + $actingUser = $this->security->getUser()->getUserIdentifier(); + $actingUser = $this->entityManager->getRepository(User::class)->findOneBy(['email' => $actingUser]); + $this->actionService->createAction("Mise à jour des Roles", + $actingUser, + $uo->getOrganization(), + "{$actingUser->getIdentifier()} a désactivé le rôle {$uo->getRole()->getName()} de + {$uo->getUsers()->getUserIdentifier()} pour l'organisation {$uo->getOrganization()->getName()}"); $this->entityManager->persist($uo); } $this->entityManager->flush();