set action log on user entity

This commit is contained in:
Charles 2025-08-04 13:57:13 +02:00
parent e6c8d5a462
commit cbdb47fb17
4 changed files with 85 additions and 0 deletions

View File

@ -0,0 +1,32 @@
<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20250804101742 extends AbstractMigration
{
public function getDescription(): string
{
return '';
}
public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE actions ADD description VARCHAR(255) DEFAULT NULL');
}
public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('CREATE SCHEMA public');
$this->addSql('ALTER TABLE actions DROP description');
}
}

View File

@ -2,6 +2,7 @@
namespace App\Controller;
use App\Entity\Actions;
use App\Entity\Apps;
use App\Entity\Roles;
use App\Entity\User;
@ -101,6 +102,11 @@ class UserController extends AbstractController
//FOR DEV PURPOSES ONLY
$this->entityManager->persist($data);
$action = new Actions();
$action->setActionType('Création utilisateur');
$action->setUsers($this->getUser());
$this->entityManager->persist($action);
$this->entityManager->flush();
// Redirect to user index
@ -137,6 +143,11 @@ class UserController extends AbstractController
if ($form->isSubmitted() && $form->isValid()) {
//Persist changes to the user entity
$entityManager->persist($user);
//Log the action
$action = new Actions();
$action->setActionType('Modification utilisateur');
$action->setUsers($this->getUser());
$entityManager->persist($action);
$entityManager->flush();
//Redirect to user profile after successful edit
@ -171,6 +182,11 @@ class UserController extends AbstractController
// Handle user deletion logic
$user->setIsDeleted(true);
$entityManager->persist($user);
// Log the action
$action = new Actions();
$action->setActionType('Suppression utilisateur');
$action->setUsers($this->getUser());
$entityManager->persist($action);
$entityManager->flush();
return $this->redirectToRoute('user_index');
@ -193,6 +209,11 @@ class UserController extends AbstractController
// Handle user deletion logic
$entityManager->remove($user);
// Log the action
$action = new Actions();
$action->setActionType('Suppression définitive utilisateur');
$action->setUsers($this->getUser());
$entityManager->persist($action);
$entityManager->flush();
return $this->redirectToRoute('user_index');
@ -215,6 +236,11 @@ class UserController extends AbstractController
}
$user->setIsActive(false);
$entityManager->persist($user);
// Log the action
$action = new Actions();
$action->setActionType('Désactivation utilisateur');
$action->setUsers($this->getUser());
$entityManager->persist($action);
$entityManager->flush();
return $this->redirectToRoute('user_index');
}

View File

@ -25,6 +25,14 @@ class Actions
#[ORM\ManyToOne(inversedBy: 'actions')]
private ?Organizations $Organization = null;
#[ORM\Column(length: 255, nullable: true)]
private ?string $description = null;
public function __construct()
{
$this->date = new \DateTimeImmutable();
}
public function getId(): ?int
{
return $this->id;
@ -77,4 +85,16 @@ class Actions
return $this;
}
public function getDescription(): ?string
{
return $this->description;
}
public function setDescription(?string $description): static
{
$this->description = $description;
return $this;
}
}

View File

@ -2,6 +2,7 @@
namespace App\Service;
use App\Entity\Actions;
use App\Entity\Apps;
use App\Entity\Organizations;
use App\Entity\Roles;
@ -333,6 +334,12 @@ 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);
$this->entityManager->persist($uo);
}
$this->entityManager->flush();