src/Controller/WebsiteController.php line 53

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use FOS\HttpCacheBundle\CacheManager;
  4. use FOS\HttpCacheBundle\Configuration\InvalidateRoute;
  5. use FOS\HttpCacheBundle\Configuration\Tag;
  6. use FOS\HttpCacheBundle\Http\SymfonyResponseTagger;
  7. use Psr\Container\ContainerInterface;
  8. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\JsonResponse;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\HttpKernel\EventListener\AbstractSessionListener;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. use Symfony\Contracts\Cache\TagAwareCacheInterface;
  16. /**
  17.  * @Route("/website")
  18.  */
  19. class WebsiteController extends AbstractController
  20. {
  21.     /**
  22.      * @Route("/_navbar_side_menu", name="website.navbar_side_menu")
  23.      *
  24.      * @Cache(smaxage="3600", public="true")
  25.      * @Tag("navbar", "static_page")
  26.      */
  27.     public function navbarSideMenu(): Response
  28.     {
  29.         return $this->render('themes/theme-5/_partials/navbar.html.twig');
  30.     }
  31.     /**
  32.      * @Route("/_menu", name="website.menu")
  33.      */
  34.     public function index(): Response
  35.     {
  36.         $response $this->render('themes/theme-5/_partials/navbar.html.twig');
  37.         $response->setSharedMaxAge(3600);
  38.         // $response->headers->set(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER, 'true');
  39.         return $response;
  40.     }
  41.     /**
  42.      * @Route("/_footer", name="website.footer")
  43.      * @Cache(smaxage="3600", public="true")
  44.      * @Tag("static_page")
  45.      */
  46.     public function footer(Request $requestSymfonyResponseTagger $symfonyResponseTagger): Response
  47.     {
  48.         $symfonyResponseTagger->addTags(['navbar''static_page']);
  49.         return $this->render('themes/theme-5/_partials/footer.html.twig');
  50.     }
  51.     /**
  52.      * @Route("/_invalidate_route", name="website.invalidate_route")
  53.      */
  54.     public function invalidateRoute(Request $requestCacheManager $cacheManager): JsonResponse
  55.     {
  56.         $token $request->headers->get('X-Invalidation-Token');
  57.         if ($this->getParameter('rewyer_api_key') !== $token) {
  58.             return $this->json(['status' => Response::HTTP_UNAUTHORIZED]);
  59.         }
  60.         if ($request->isMethod('POST')) {
  61.             $routes json_decode($request->getContent(), true);
  62.             foreach ($routes as $route) {
  63.                 $cacheManager->invalidateRoute($route);
  64.             }
  65.             return $this->json(['status' => Response::HTTP_OK]);
  66.         }
  67.         return $this->json(['status' => Response::HTTP_METHOD_NOT_ALLOWED]);
  68.     }
  69. }