Subscriber add filter on get method

58 Views Asked by At

I would like to know if it is possible to add a filter automatically on a certain GET call in a subscriber? I am using api_platform 5.4.

I already use subscriber for POST methods to add default values ​​depending on the connected user. And I would therefore like to filter the data according to the person connected.

class FiltreCodeOrgaSubscriber implements EventSubscriberInterface
{
    /**
     * Entity Manager
     *
     * @var Entity Manager
     */
    protected $em;

    /**
     * @var security
     */
    protected $security;

    public function __construct(EntityManagerInterface $em, Security $security)
    {
        $this->em = $em;
        $this->security = $security;
    }

    public static function getSubscribedEvents(): array
    {
        return [
            KernelEvents::VIEW => [
                ['setCodeOrga', EventPriorities::PRE_VALIDATE],
            ],
            KernelEvents::CONTROLLER_ARGUMENTS => [
              ['addCodeOrga', EventPriorities::PRE_WRITE],
            ]
        ];
    }

    public function addCodeOrga(ControllerArgumentsEvent $event) {
        $event->getRequest()->query->set('codeOrga', 777);
    }
    public function setCodeOrga(ViewEvent $event) {
        $maClasse = $event->getControllerResult();
        $methode = $event->getRequest()->getMethod();
        $user = $this->security->getUser();
        if (!$user) {
            throw new \Exception('Subscriber : Erreur lors de la récupération du code agent');
        }

        if (
            (
                $maClasse instanceof CodifRecrutement
                || $maClasse instanceof Etablissement
            )
            &&
            (
                $methode === 'POST' ||
                $methode === 'PUT'
            )
        )
        {
            var_dump('test1');
            $maClasse->setCodeOrga(intval($user->getCodeorga()));
        }
    }
}

But the result isn't good

0

There are 0 best solutions below