CurrentNotificationUserExtension.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Doctrine\Core;
  4. use App\Doctrine\AbstractExtension;
  5. use App\Entity\Access\Access;
  6. use App\Entity\Core\NotificationUser;
  7. use Doctrine\ORM\QueryBuilder;
  8. use Symfony\Bundle\SecurityBundle\Security;
  9. /**
  10. * Filtre de sécurité par défaut pour une resource NotificationUser
  11. *
  12. * @package App\Doctrine\Core
  13. */
  14. final class CurrentNotificationUserExtension extends AbstractExtension
  15. {
  16. public function __construct(private Security $security)
  17. { }
  18. /**
  19. * @todo : A la suite de la migration, il faut supprimer le where avec le discr.
  20. */
  21. protected function addWhere(QueryBuilder $queryBuilder, string $resourceClass): void
  22. {
  23. if (NotificationUser::class !== $resourceClass) {
  24. return;
  25. }
  26. /** @var Access $currentUser */
  27. $currentUser = $this->security->getUser();
  28. $rootAlias = $queryBuilder->getRootAliases()[0];
  29. $queryBuilder
  30. ->andWhere(sprintf('%s.access = :current_access', $rootAlias))
  31. ->setParameter('current_access', $currentUser)
  32. ;
  33. }
  34. }