src/Controller/Back/ConfigController.php line 67

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Back;
  3. use App\Entity\Page;
  4. use App\Form\Model\Settings;
  5. use Doctrine\Persistence\ManagerRegistry;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\JsonResponse;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. #[Route('/back/config')]
  12. class ConfigController extends AbstractController
  13. {
  14.     public function __construct(protected ManagerRegistry $managerRegistry)
  15.     {
  16.     }
  17.     #[Route('/javascript-settings.js'name'back_config_javascriptSettings')]
  18.     public function javascriptSettings(): Response
  19.     {
  20.         $response = new Response($this->renderView('back/config/javascript-settings.js.twig'));
  21.         $response->headers->set('Content-Type''text/javascript');
  22.         return $response;
  23.     }
  24.     #[Route('/cloudinary-signature'name'back_config_cloudinary_signature')]
  25.     public function cloudinarySignature(): JsonResponse
  26.     {
  27.         // See: https://cloudinary.com/documentation/media_library_widget#2_optional_generate_the_authentication_signature
  28.         $data      = [];
  29.         $cloudName Settings::get('cloudinaryCloudName');
  30.         $timestamp time();
  31.         $username  Settings::get('cloudinaryUsername');
  32.         $apiSecret Settings::get('cloudinaryApiSecret');
  33.         $str               'cloud_name='.$cloudName.'&timestamp='.$timestamp.'&username='.$username.$apiSecret;
  34.         $encrypted         hash('sha256'$str);
  35.         $data['signature'] = $encrypted;
  36.         $data['timestamp'] = $timestamp;
  37.         return new JsonResponse($data);
  38.     }
  39.     #[Route('/javascript-pages-list.js'name'back_config_javascriptPageList')]
  40.     public function javascriptPageList(Request $request): Response
  41.     {
  42.         $locale $request->get('locale'null);
  43.         $repository $this->managerRegistry->getRepository(Page::class);
  44.         $pages $repository->findBy(['locale' => $locale'status' => 'published''visibility' => 'public'], ['globalTitle' => 'ASC']);
  45.         $response = new Response($this->renderView('back/config/javascript-pages-list.js.twig', [
  46.             'pages' => $pages,
  47.         ]));
  48.         $response->headers->set('Content-Type''text/javascript');
  49.         return $response;
  50.     }
  51.     #[Route('/i18n.js'name'back_config_javascriptMessages')]
  52.     public function javascriptMessages(): Response
  53.     {
  54.         $response = new Response($this->renderView('back/config/javascript-messages.js.twig', []));
  55.         $response->headers->set('Content-Type''text/javascript');
  56.         return $response;
  57.     }
  58. }