|
@@ -7,6 +7,7 @@ use ApiPlatform\Doctrine\Orm\Extension\QueryCollectionExtensionInterface;
|
|
|
use ApiPlatform\Doctrine\Orm\Extension\QueryItemExtensionInterface;
|
|
use ApiPlatform\Doctrine\Orm\Extension\QueryItemExtensionInterface;
|
|
|
use ApiPlatform\Doctrine\Orm\Util\QueryNameGeneratorInterface;
|
|
use ApiPlatform\Doctrine\Orm\Util\QueryNameGeneratorInterface;
|
|
|
use ApiPlatform\Metadata\Operation;
|
|
use ApiPlatform\Metadata\Operation;
|
|
|
|
|
+use App\Doctrine\AbstractExtension;
|
|
|
use App\Entity\Access\Access;
|
|
use App\Entity\Access\Access;
|
|
|
use App\Service\ServiceIterator\CurrentAccessExtensionIterator;
|
|
use App\Service\ServiceIterator\CurrentAccessExtensionIterator;
|
|
|
use Doctrine\ORM\QueryBuilder;
|
|
use Doctrine\ORM\QueryBuilder;
|
|
@@ -16,7 +17,7 @@ use Symfony\Bundle\SecurityBundle\Security;
|
|
|
* Class CurrentAccessExtension : Filtre de sécurité par défaut pour une resource Access
|
|
* Class CurrentAccessExtension : Filtre de sécurité par défaut pour une resource Access
|
|
|
* @package App\Doctrine\Access
|
|
* @package App\Doctrine\Access
|
|
|
*/
|
|
*/
|
|
|
-final class CurrentAccessExtension implements QueryCollectionExtensionInterface, QueryItemExtensionInterface
|
|
|
|
|
|
|
+final class CurrentAccessExtension extends AbstractExtension
|
|
|
{
|
|
{
|
|
|
public function __construct(
|
|
public function __construct(
|
|
|
private Security $security,
|
|
private Security $security,
|
|
@@ -24,39 +25,12 @@ final class CurrentAccessExtension implements QueryCollectionExtensionInterface
|
|
|
)
|
|
)
|
|
|
{ }
|
|
{ }
|
|
|
|
|
|
|
|
- /**
|
|
|
|
|
- * @param QueryBuilder $queryBuilder
|
|
|
|
|
- * @param QueryNameGeneratorInterface $queryNameGenerator
|
|
|
|
|
- * @param string $resourceClass
|
|
|
|
|
- * @param Operation|null $operation
|
|
|
|
|
- * @param mixed[] $context
|
|
|
|
|
- * @return void
|
|
|
|
|
- */
|
|
|
|
|
- public function applyToCollection(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, Operation $operation = null, array $context = []): void
|
|
|
|
|
- {
|
|
|
|
|
- $this->addWhere($queryBuilder, $resourceClass, $operation?->getName());
|
|
|
|
|
|
|
+ public function supports(string $resourceClass, ?Operation $operation): bool {
|
|
|
|
|
+ return $resourceClass === Access::class;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- /**
|
|
|
|
|
- * @param QueryBuilder $queryBuilder
|
|
|
|
|
- * @param QueryNameGeneratorInterface $queryNameGenerator
|
|
|
|
|
- * @param string $resourceClass
|
|
|
|
|
- * @param list<int> $identifiers
|
|
|
|
|
- * @param Operation|null $operation
|
|
|
|
|
- * @param mixed[] $context
|
|
|
|
|
- * @return void
|
|
|
|
|
- */
|
|
|
|
|
- public function applyToItem(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, array $identifiers, Operation $operation = null, array $context = []): void
|
|
|
|
|
|
|
+ public function addWhere(QueryBuilder $queryBuilder, string $resourceClass, ?Operation $operation): void
|
|
|
{
|
|
{
|
|
|
- $this->addWhere($queryBuilder, $resourceClass, $operation?->getName());
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- public function addWhere(QueryBuilder $queryBuilder, string $resourceClass, ?string $operationName): void
|
|
|
|
|
- {
|
|
|
|
|
- if (Access::class !== $resourceClass) {
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
/** @var Access $currentUser */
|
|
/** @var Access $currentUser */
|
|
|
$currentUser = $this->security->getUser();
|
|
$currentUser = $this->security->getUser();
|
|
|
$rootAlias = $queryBuilder->getRootAliases()[0];
|
|
$rootAlias = $queryBuilder->getRootAliases()[0];
|
|
@@ -65,6 +39,6 @@ final class CurrentAccessExtension implements QueryCollectionExtensionInterface
|
|
|
->setParameter('current_organization', $currentUser->getOrganization())
|
|
->setParameter('current_organization', $currentUser->getOrganization())
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
- $this->currentAccessExtensionIterator->addWhere($queryBuilder, $operationName);
|
|
|
|
|
|
|
+ $this->currentAccessExtensionIterator->addWhere($queryBuilder, $operation?->getName());
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|