Log action

This commit is contained in:
Charles 2025-08-07 15:01:59 +02:00
parent 0d498d4570
commit 61e43dcd98
1 changed files with 27 additions and 6 deletions

View File

@ -7,9 +7,11 @@ use App\Entity\Apps;
use App\Entity\Organizations; use App\Entity\Organizations;
use App\Entity\Roles; use App\Entity\Roles;
use App\Entity\User; use App\Entity\User;
use App\Service\ActionService;
use App\Service\UserService; use App\Service\UserService;
use App\Entity\UsersOrganizations; use App\Entity\UsersOrganizations;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\SecurityBundle\Security;
/** /**
* Service pour la gestion des organisations d'utilisateurs. * Service pour la gestion des organisations d'utilisateurs.
@ -23,7 +25,9 @@ readonly class UserOrganizationService
* @param EntityManagerInterface $entityManager Le gestionnaire d'entités Doctrine * @param EntityManagerInterface $entityManager Le gestionnaire d'entités Doctrine
*/ */
public function __construct(private readonly EntityManagerInterface $entityManager, 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) { foreach ($uoEntity->getApps()->toArray() as $existingApp) {
if (!in_array($existingApp->getId(), $selectedApps)) { if (!in_array($existingApp->getId(), $selectedApps)) {
$uoEntity->removeApp($existingApp); $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); $appEntity = $this->entityManager->getRepository(Apps::class)->find($appId);
if ($appEntity && !$uoEntity->getApps()->contains($appEntity)) { if ($appEntity && !$uoEntity->getApps()->contains($appEntity)) {
$uoEntity->addApp($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) { foreach ($userOrganizations as $uo) {
$uo->setIsActive(false); $uo->setIsActive(false);
//Log action //Log action
$action = new Actions(); $actingUser = $this->security->getUser()->getUserIdentifier();
$action->setActionType("Désactivation role" ); $actingUser = $this->entityManager->getRepository(User::class)->findOneBy(['email' => $actingUser]);
$action->setDescription("Désactivation du rôle " . $uo->getRole()->getName() . " pour l'utilisateur " . $user->getUserIdentifier() . " dans l'organisation " . $organization->getName()); $this->actionService->createAction("Mise à jour des Roles",
$action->setOrganization($organization); $actingUser,
$action->setUsers($user); $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->persist($uo);
} }
$this->entityManager->flush(); $this->entityManager->flush();