|
@@ -3,7 +3,10 @@ declare(strict_types=1);
|
|
|
|
|
|
|
|
namespace App\Doctrine\Access;
|
|
namespace App\Doctrine\Access;
|
|
|
|
|
|
|
|
-use App\Doctrine\AbstractExtension;
|
|
|
|
|
|
|
+use ApiPlatform\Doctrine\Orm\Extension\QueryCollectionExtensionInterface;
|
|
|
|
|
+use ApiPlatform\Doctrine\Orm\Extension\QueryItemExtensionInterface;
|
|
|
|
|
+use ApiPlatform\Doctrine\Orm\Util\QueryNameGeneratorInterface;
|
|
|
|
|
+use ApiPlatform\Metadata\Operation;
|
|
|
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;
|
|
@@ -13,7 +16,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 extends AbstractExtension
|
|
|
|
|
|
|
+final class CurrentAccessExtension implements QueryCollectionExtensionInterface, QueryItemExtensionInterface
|
|
|
{
|
|
{
|
|
|
public function __construct(
|
|
public function __construct(
|
|
|
private Security $security,
|
|
private Security $security,
|
|
@@ -21,7 +24,17 @@ final class CurrentAccessExtension extends AbstractExtension
|
|
|
)
|
|
)
|
|
|
{ }
|
|
{ }
|
|
|
|
|
|
|
|
- protected function addWhere(QueryBuilder $queryBuilder, string $resourceClass, string $operationName): void
|
|
|
|
|
|
|
+ public function applyToCollection(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, Operation $operation = null, array $context = []): void
|
|
|
|
|
+ {
|
|
|
|
|
+ $this->addWhere($queryBuilder, $resourceClass, $operation?->getName());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public function applyToItem(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, array $identifiers, Operation $operation = null, array $context = []): void
|
|
|
|
|
+ {
|
|
|
|
|
+ $this->addWhere($queryBuilder, $resourceClass, $operation?->getName());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public function addWhere(QueryBuilder $queryBuilder, string $resourceClass, ?string $operationName): void
|
|
|
{
|
|
{
|
|
|
if (Access::class !== $resourceClass) {
|
|
if (Access::class !== $resourceClass) {
|
|
|
return;
|
|
return;
|