Loading api/config/services.yaml +5 −0 Changes for api/config/services.yaml: 5 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -5,3 +5,8 @@ services: Unicaen\Utilisateur\: resource: '../src/*' parameters: unicaen.user_class: 'Unicaen\Utilisateur\Entity\User' unicaen.role_class: 'Unicaen\Privilege\Entity\Role' unicaen.user_role: 'Unicaen\Privilege\Entity\UserRole' No newline at end of file api/src/DependencyInjection/UnicaenUtilisateurExtension.php +3 −1 Changes for api/src/DependencyInjection/UnicaenUtilisateurExtension.php: 3 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -19,13 +19,15 @@ class UnicaenUtilisateurExtension extends Extension implements PrependExtensionI // Paramètres (avec valeurs par défaut) que l’app pourra surcharger $container->setParameter('unicaen.user_class', \Unicaen\Utilisateur\Entity\User::class); $container->setParameter('unicaen.role_class', \Unicaen\Utilisateur\Entity\Role::class); $container->setParameter('unicaen.user_role', \Unicaen\Utilisateur\Entity\UserRole::class); // Mapping par défaut (pré-ajouté) $container->prependExtensionConfig('doctrine', [ 'orm' => [ 'resolve_target_entities' => [ \Unicaen\Utilisateur\Model\UnicaenUserInterface::class => '%unicaen.user_class%', \Unicaen\Utilisateur\Model\UserInterface::class => '%unicaen.user_class%', \Unicaen\Utilisateur\Model\RoleInterface::class => '%unicaen.role_class%', \Unicaen\Utilisateur\Model\UserRoleInterface::class => '%unicaen.user_role%', ], ], ]); Loading api/src/Dto/PerimetreUtilisateurMeDto.php 0 → 100644 +21 −0 Changes for api/src/Dto/PerimetreUtilisateurMeDto.php: 21 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Unicaen\Utilisateur\Dto; use Symfony\Component\Serializer\Attribute\Groups; use Unicaen\Privilege\Model\PerimetreUserRoleInterface; class PerimetreUtilisateurMeDto { #[Groups(['user:me'])] public int $id; public function __construct(?PerimetreUserRoleInterface $perimetreUserRole) { if(!$perimetreUserRole){ $this->id = 0; return; } $this->id = $perimetreUserRole->getId(); } } api/src/Dto/UtilisateurMeResource.php +11 −0 Changes for api/src/Dto/UtilisateurMeResource.php: 11 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ namespace Unicaen\Utilisateur\Dto; use Symfony\Component\Serializer\Attribute\Groups; use Unicaen\Privilege\Model\PerimetreUserRoleInterface; class UtilisateurMeResource { Loading @@ -15,6 +16,16 @@ class UtilisateurMeResource #[Groups(['user:me'])] public array $roles; #[Groups(['user:me'])] public bool $isPerimetreEnable; // Ce champ est utilisé uniquement si le périmètre n'est pas activé, sinon c'est activePerimetreUserRole qui est utilisé #[Groups(['user:me'])] public ?string $activeRole; #[Groups(['user:me'])] public ?PerimetreUtilisateurMeDto $activePerimetreUserRole = null; #[Groups(['user:me'])] public array $privileges = []; } api/src/Entity/AbstractRole.php +30 −16 Changes for api/src/Entity/AbstractRole.php: 30 added lines, 16 removed lines. Original line number Diff line number Diff line Loading @@ -6,8 +6,10 @@ use ApiPlatform\Metadata\ApiResource; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Unicaen\Utilisateur\Model\RoleInterface; use Unicaen\Utilisateur\Model\UnicaenUserInterface; use Unicaen\Utilisateur\Model\UserInterface; use Unicaen\Privilege\Model\PrivilegeInterface; use Unicaen\Privilege\Model\PerimetreCategorieInterface; use Unicaen\Utilisateur\Model\UserRoleInterface; #[ORM\MappedSuperclass] Loading @@ -33,12 +35,15 @@ abstract class AbstractRole implements RoleInterface protected bool $accessibleExterieur = true; protected bool $displayed = true; #[ORM\ManyToMany(targetEntity: UnicaenUserInterface::class, mappedBy: 'roles')] #[ORM\OneToMany(targetEntity: UserRoleInterface::class, mappedBy: 'role', cascade: ['persist', 'remove'], orphanRemoval: true)] protected Collection $users; #[ORM\ManyToMany(targetEntity: PrivilegeInterface::class, mappedBy: 'roles')] protected Collection $privileges; #[ORM\ManyToMany(targetEntity: PerimetreCategorieInterface::class, mappedBy: 'roles')] protected Collection $perimetreCategories; public function getId() : ?int { return $this->id; Loading Loading @@ -142,17 +147,9 @@ abstract class AbstractRole implements RoleInterface public function getUsers() : Collection { return $this->users; } public function addUser(UnicaenUserInterface $user) : void { $this->users->add($user); } public function removeUser(UnicaenUserInterface $user) : void { $this->users->removeElement($user); return $this->users->map(function (UserRoleInterface $userRole) { return $userRole->getUser(); }); } public function getPrivileges() : Collection Loading @@ -160,7 +157,7 @@ abstract class AbstractRole implements RoleInterface return $this->privileges; } public function addPrivilege(PrivilegeInterface $privilege) : void public function addPrivilege(PrivilegeInterface $privilege) : RoleInterface { if (!$this->privileges->contains($privilege)) { $this->privileges->add($privilege); Loading @@ -169,6 +166,7 @@ abstract class AbstractRole implements RoleInterface $privilege->addRole($this); } } return $this; } public function hasPrivilege(PrivilegeInterface $privilege) : bool Loading @@ -176,12 +174,28 @@ abstract class AbstractRole implements RoleInterface return $this->privileges->contains($privilege); } public function removePrivilege(PrivilegeInterface $privilege) : void public function removePrivilege(PrivilegeInterface $privilege) : RoleInterface { $this->privileges->removeElement($privilege); return $this; } /** Fonctions magiques ********************************************************************************************/ public function getPerimetreCategories(): Collection { return $this->perimetreCategories; } public function addPerimetreCategorie(PerimetreCategorieInterface $perimetreCategorie): RoleInterface { $this->perimetreCategories->add($perimetreCategorie); return $this; } public function removePerimetreCategorie(PerimetreCategorieInterface $perimetreCategorie): RoleInterface { $this->perimetreCategories->removeElement($perimetreCategorie); return $this; } public function __toString() : string { Loading Loading
api/config/services.yaml +5 −0 Changes for api/config/services.yaml: 5 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -5,3 +5,8 @@ services: Unicaen\Utilisateur\: resource: '../src/*' parameters: unicaen.user_class: 'Unicaen\Utilisateur\Entity\User' unicaen.role_class: 'Unicaen\Privilege\Entity\Role' unicaen.user_role: 'Unicaen\Privilege\Entity\UserRole' No newline at end of file
api/src/DependencyInjection/UnicaenUtilisateurExtension.php +3 −1 Changes for api/src/DependencyInjection/UnicaenUtilisateurExtension.php: 3 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -19,13 +19,15 @@ class UnicaenUtilisateurExtension extends Extension implements PrependExtensionI // Paramètres (avec valeurs par défaut) que l’app pourra surcharger $container->setParameter('unicaen.user_class', \Unicaen\Utilisateur\Entity\User::class); $container->setParameter('unicaen.role_class', \Unicaen\Utilisateur\Entity\Role::class); $container->setParameter('unicaen.user_role', \Unicaen\Utilisateur\Entity\UserRole::class); // Mapping par défaut (pré-ajouté) $container->prependExtensionConfig('doctrine', [ 'orm' => [ 'resolve_target_entities' => [ \Unicaen\Utilisateur\Model\UnicaenUserInterface::class => '%unicaen.user_class%', \Unicaen\Utilisateur\Model\UserInterface::class => '%unicaen.user_class%', \Unicaen\Utilisateur\Model\RoleInterface::class => '%unicaen.role_class%', \Unicaen\Utilisateur\Model\UserRoleInterface::class => '%unicaen.user_role%', ], ], ]); Loading
api/src/Dto/PerimetreUtilisateurMeDto.php 0 → 100644 +21 −0 Changes for api/src/Dto/PerimetreUtilisateurMeDto.php: 21 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Unicaen\Utilisateur\Dto; use Symfony\Component\Serializer\Attribute\Groups; use Unicaen\Privilege\Model\PerimetreUserRoleInterface; class PerimetreUtilisateurMeDto { #[Groups(['user:me'])] public int $id; public function __construct(?PerimetreUserRoleInterface $perimetreUserRole) { if(!$perimetreUserRole){ $this->id = 0; return; } $this->id = $perimetreUserRole->getId(); } }
api/src/Dto/UtilisateurMeResource.php +11 −0 Changes for api/src/Dto/UtilisateurMeResource.php: 11 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ namespace Unicaen\Utilisateur\Dto; use Symfony\Component\Serializer\Attribute\Groups; use Unicaen\Privilege\Model\PerimetreUserRoleInterface; class UtilisateurMeResource { Loading @@ -15,6 +16,16 @@ class UtilisateurMeResource #[Groups(['user:me'])] public array $roles; #[Groups(['user:me'])] public bool $isPerimetreEnable; // Ce champ est utilisé uniquement si le périmètre n'est pas activé, sinon c'est activePerimetreUserRole qui est utilisé #[Groups(['user:me'])] public ?string $activeRole; #[Groups(['user:me'])] public ?PerimetreUtilisateurMeDto $activePerimetreUserRole = null; #[Groups(['user:me'])] public array $privileges = []; }
api/src/Entity/AbstractRole.php +30 −16 Changes for api/src/Entity/AbstractRole.php: 30 added lines, 16 removed lines. Original line number Diff line number Diff line Loading @@ -6,8 +6,10 @@ use ApiPlatform\Metadata\ApiResource; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Unicaen\Utilisateur\Model\RoleInterface; use Unicaen\Utilisateur\Model\UnicaenUserInterface; use Unicaen\Utilisateur\Model\UserInterface; use Unicaen\Privilege\Model\PrivilegeInterface; use Unicaen\Privilege\Model\PerimetreCategorieInterface; use Unicaen\Utilisateur\Model\UserRoleInterface; #[ORM\MappedSuperclass] Loading @@ -33,12 +35,15 @@ abstract class AbstractRole implements RoleInterface protected bool $accessibleExterieur = true; protected bool $displayed = true; #[ORM\ManyToMany(targetEntity: UnicaenUserInterface::class, mappedBy: 'roles')] #[ORM\OneToMany(targetEntity: UserRoleInterface::class, mappedBy: 'role', cascade: ['persist', 'remove'], orphanRemoval: true)] protected Collection $users; #[ORM\ManyToMany(targetEntity: PrivilegeInterface::class, mappedBy: 'roles')] protected Collection $privileges; #[ORM\ManyToMany(targetEntity: PerimetreCategorieInterface::class, mappedBy: 'roles')] protected Collection $perimetreCategories; public function getId() : ?int { return $this->id; Loading Loading @@ -142,17 +147,9 @@ abstract class AbstractRole implements RoleInterface public function getUsers() : Collection { return $this->users; } public function addUser(UnicaenUserInterface $user) : void { $this->users->add($user); } public function removeUser(UnicaenUserInterface $user) : void { $this->users->removeElement($user); return $this->users->map(function (UserRoleInterface $userRole) { return $userRole->getUser(); }); } public function getPrivileges() : Collection Loading @@ -160,7 +157,7 @@ abstract class AbstractRole implements RoleInterface return $this->privileges; } public function addPrivilege(PrivilegeInterface $privilege) : void public function addPrivilege(PrivilegeInterface $privilege) : RoleInterface { if (!$this->privileges->contains($privilege)) { $this->privileges->add($privilege); Loading @@ -169,6 +166,7 @@ abstract class AbstractRole implements RoleInterface $privilege->addRole($this); } } return $this; } public function hasPrivilege(PrivilegeInterface $privilege) : bool Loading @@ -176,12 +174,28 @@ abstract class AbstractRole implements RoleInterface return $this->privileges->contains($privilege); } public function removePrivilege(PrivilegeInterface $privilege) : void public function removePrivilege(PrivilegeInterface $privilege) : RoleInterface { $this->privileges->removeElement($privilege); return $this; } /** Fonctions magiques ********************************************************************************************/ public function getPerimetreCategories(): Collection { return $this->perimetreCategories; } public function addPerimetreCategorie(PerimetreCategorieInterface $perimetreCategorie): RoleInterface { $this->perimetreCategories->add($perimetreCategorie); return $this; } public function removePerimetreCategorie(PerimetreCategorieInterface $perimetreCategorie): RoleInterface { $this->perimetreCategories->removeElement($perimetreCategorie); return $this; } public function __toString() : string { Loading