<?php
|
|
namespace App\Filter;
|
|
use ApiPlatform\Core\Bridge\Doctrine\Orm\Extension\QueryItemExtensionInterface;
|
use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGeneratorInterface;
|
use App\Entity\Secret;
|
use Doctrine\ORM\QueryBuilder;
|
|
/**
|
* This class restricts the items we can retrieve trough the API.
|
*/
|
class PublicSecretQueryExtension implements QueryItemExtensionInterface
|
{
|
public function applyToItem(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, array $identifiers, string $operationName = null, array $context = [])
|
{
|
if ($resourceClass !== Secret::class) {
|
return;
|
}
|
$rootAlias = $queryBuilder->getRootAliases()[0];
|
$queryBuilder
|
->andWhere($rootAlias . ".expiresAt >= CURRENT_TIMESTAMP() OR " . $rootAlias . ".expiresAt is null")
|
->andWhere($rootAlias . ".remainingViews > 0");
|
}
|
|
}
|