CurrentCycleExtension.php 1.1 KB

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