CurrentCoursesExtension.php 1.2 KB

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