src/App/EventListener/ExceptionListener.php line 15

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Utils\Payload\Payload;
  4. use Aura\Payload_Interface\PayloadStatus;
  5. use Symfony\Component\HttpFoundation\JsonResponse;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\HttpKernel\Event\ExceptionEvent;
  8. use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
  9. use Symfony\Component\Security\Csrf\TokenStorage\TokenStorageInterface;
  10. class ExceptionListener
  11. {
  12.     public function __invoke(ExceptionEvent $event)
  13.     {
  14.         $exception $event->getThrowable();
  15.         $payload = new Payload();
  16.         $payload->setStatus(PayloadStatus::ERROR);
  17.         $payload->setMessages([
  18.             $exception->getMessage(),
  19.         ]);
  20.         $payload->setExtras([
  21.             'path' => $exception->getFile(),
  22.             'line' => $exception->getLine(),
  23.         ]);
  24.         $response = new JsonResponse();
  25.         if ($exception instanceof HttpExceptionInterface) {
  26.             $response->setStatusCode($exception->getStatusCode());
  27.             $response->headers->replace($exception->getHeaders());
  28.         } else {
  29.             $response->setStatusCode(Response::HTTP_INTERNAL_SERVER_ERROR);
  30.         }
  31.         if (403 === $response->getStatusCode()) {
  32.             $payload->setStatus(PayloadStatus::NOT_AUTHORIZED);
  33.             $payload->setMessages(['Yetkisiz işlem.']);
  34.         }
  35.         $response->setData($payload->toArray());
  36.         $event->setResponse($response);
  37.     }
  38. }