Loading config/services.yaml +10 −0 Changes for config/services.yaml: 10 added lines, 0 removed lines. Original line number Diff line number Diff line parameters: unicaen.user_class: 'Unicaen\Utilisateur\Entity\User' unicaen.role_class: 'Unicaen\Utilisateur\Entity\Role' histo.histo_default_username: '%env(trim:HISTO_DEFAULT_USERNAME)%' services: _defaults: autowire: true Loading @@ -5,3 +10,8 @@ services: Unicaen\Utilisateur\: resource: '../src/*' 'Unicaen\Utilisateur\Serializer\HistoContextBuilder': decorates: 'api_platform.serializer.context_builder' arguments: [ '@Unicaen\Utilisateur\Serializer\HistoContextBuilder.inner' ] autoconfigure: false src/Entity/AbstractUser.php +1 −1 Changes for src/Entity/AbstractUser.php: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -50,7 +50,7 @@ abstract class AbstractUser implements UnicaenUserInterface, PasswordAuthenticat #[ORM\Column(length: 180, unique: true)] protected string $email; #[Groups(['user:read', 'user:create', 'user:update'])] #[Groups(['user:read', 'user:create', 'user:update', 'histoUser:read'])] #[ORM\Column(length: 180, nullable: true)] protected ?string $displayName = null; Loading src/Serializer/HistoContextBuilder.php 0 → 100644 +39 −0 Changes for src/Serializer/HistoContextBuilder.php: 39 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace App\Serializer; use ApiPlatform\State\SerializerContextBuilderInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; use Unicaen\Utilisateur\Model\HistoriqueAwareInterface; class HistoContextBuilder implements SerializerContextBuilderInterface { private $decorated; private $authorizationChecker; public function __construct(SerializerContextBuilderInterface $decorated, AuthorizationCheckerInterface $authorizationChecker) { $this->decorated = $decorated; $this->authorizationChecker = $authorizationChecker; } public function createFromRequest(Request $request, bool $normalization, ?array $extractedAttributes = null): array { $context = $this->decorated->createFromRequest($request, $normalization, $extractedAttributes); $resourceClass = $context['resource_class'] ?? null; //Vérification sur le fait que la class demandé existe if(!$resourceClass || ! class_exists($resourceClass)) { return $context;} //Vérification que la class est une HistoriqueAwareInterface if(!is_a(new $resourceClass(), HistoriqueAwareInterface::class)) {return $context;} $method = $request->getMethod(); // Ajout du groupe histoUser:read pour la méthode GET // ce context de normalisation ne permet d'acceder qu'au displayName de l'utilisateur et pas aux autres informations tel que la liste de ces rôles switch ($method) { case 'GET': $context['groups'][] = 'histoUser:read'; break; } return $context; } } No newline at end of file Loading
config/services.yaml +10 −0 Changes for config/services.yaml: 10 added lines, 0 removed lines. Original line number Diff line number Diff line parameters: unicaen.user_class: 'Unicaen\Utilisateur\Entity\User' unicaen.role_class: 'Unicaen\Utilisateur\Entity\Role' histo.histo_default_username: '%env(trim:HISTO_DEFAULT_USERNAME)%' services: _defaults: autowire: true Loading @@ -5,3 +10,8 @@ services: Unicaen\Utilisateur\: resource: '../src/*' 'Unicaen\Utilisateur\Serializer\HistoContextBuilder': decorates: 'api_platform.serializer.context_builder' arguments: [ '@Unicaen\Utilisateur\Serializer\HistoContextBuilder.inner' ] autoconfigure: false
src/Entity/AbstractUser.php +1 −1 Changes for src/Entity/AbstractUser.php: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -50,7 +50,7 @@ abstract class AbstractUser implements UnicaenUserInterface, PasswordAuthenticat #[ORM\Column(length: 180, unique: true)] protected string $email; #[Groups(['user:read', 'user:create', 'user:update'])] #[Groups(['user:read', 'user:create', 'user:update', 'histoUser:read'])] #[ORM\Column(length: 180, nullable: true)] protected ?string $displayName = null; Loading
src/Serializer/HistoContextBuilder.php 0 → 100644 +39 −0 Changes for src/Serializer/HistoContextBuilder.php: 39 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace App\Serializer; use ApiPlatform\State\SerializerContextBuilderInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; use Unicaen\Utilisateur\Model\HistoriqueAwareInterface; class HistoContextBuilder implements SerializerContextBuilderInterface { private $decorated; private $authorizationChecker; public function __construct(SerializerContextBuilderInterface $decorated, AuthorizationCheckerInterface $authorizationChecker) { $this->decorated = $decorated; $this->authorizationChecker = $authorizationChecker; } public function createFromRequest(Request $request, bool $normalization, ?array $extractedAttributes = null): array { $context = $this->decorated->createFromRequest($request, $normalization, $extractedAttributes); $resourceClass = $context['resource_class'] ?? null; //Vérification sur le fait que la class demandé existe if(!$resourceClass || ! class_exists($resourceClass)) { return $context;} //Vérification que la class est une HistoriqueAwareInterface if(!is_a(new $resourceClass(), HistoriqueAwareInterface::class)) {return $context;} $method = $request->getMethod(); // Ajout du groupe histoUser:read pour la méthode GET // ce context de normalisation ne permet d'acceder qu'au displayName de l'utilisateur et pas aux autres informations tel que la liste de ces rôles switch ($method) { case 'GET': $context['groups'][] = 'histoUser:read'; break; } return $context; } } No newline at end of file