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