public function onKernelRequest(GetResponseEvent $event) { if ($this->kernel->getEnvironment() != "dev") { if (preg_match("/\\/api\\//", $event->getRequest()->getUri())) { $requestUri = $event->getRequest()->getUri(); $requestMethod = $event->getRequest()->getMethod(); if ($requestMethod !== "GET") { $token = $this->context->getToken(); if (isset($token)) { $user = $token->getUser(); if (!isset($user) || "anon." === $user) { if (!$event->getRequest()->query->has('api_key')) { $event->setResponse(new Response(json_encode(array("code" => 401, "message" => "The request requires user authentication")), 401)); } } } else { $event->setResponse(new Response(json_encode(array("code" => 401, "message" => "The request requires user authentication")), 401)); } } } } $request = $event->getRequest(); if (!count($request->request->all()) && in_array($request->getMethod(), array('POST', 'PUT', 'PATCH', 'DELETE'))) { $contentType = $request->headers->get('Content-Type'); $format = null === $contentType ? $request->getRequestFormat() : $request->getFormat($contentType); if (!$this->decoderProvider->supports($format)) { return; } $decoder = $this->decoderProvider->getDecoder($format); $data = $decoder->decode($request->getContent(), $format); if (is_array($data)) { $request->request = new ParameterBag($data); } } }
protected function doKernelRequest(Request $request) { $routeName = $request->attributes->get('_route'); $route = $this->routes->get($routeName); if (!$route) { return; } $format = $request->getFormat($request->headers->get('Content-Type', null, true)); if ($this->decoderProvider->supports($format)) { /** @var \FOS\Rest\Decoder\DecoderInterface $decoder */ $decoder = $this->decoderProvider->getDecoder($format); $data = $decoder->decode($request->getContent()); $request->request->replace(is_array($data) ? $data : array()); } }
/** * Core request handler * * @param GetResponseEvent $event The event */ public function onKernelRequest(GetResponseEvent $event) { $request = $event->getRequest(); if (!count($request->request->all()) && in_array($request->getMethod(), array('POST', 'PUT', 'PATCH', 'DELETE'))) { $contentType = $request->headers->get('Content-Type'); $format = null === $contentType ? $request->getRequestFormat() : $request->getFormat($contentType); if (!$this->decoderProvider->supports($format)) { return; } $decoder = $this->decoderProvider->getDecoder($format); $data = $decoder->decode($request->getContent(), $format); if (is_array($data)) { $request->request = new ParameterBag($data); } } }