CurrentOrganizationArticleExtension.php 1.1 KB

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