src/Controller/ParametersController.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\HttpFoundation\JsonResponse;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use Symfony\Component\Security\Core\User\UserInterface;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use App\Entity\User;
  11. class ParametersController extends AbstractController
  12. {
  13. #[Route('/parametres', name: 'app_parameters', methods: ['GET'])]
  14. public function index(UserInterface $user): Response
  15. {
  16. /** @var User $user */
  17. return $this->render('parameters/index.html.twig', [
  18. 'allow_cookies' => $user->allowCookies(),
  19. 'allow_geolocation' => $user->allowGeolocation(),
  20. 'allow_notifications' => $user->allowNotifications(),
  21. 'allow_emails' => $user->allowEmails(),
  22. ]);
  23. }
  24. #[Route('/parametres', name: 'update_parameters', options: ["expose" => true], methods: ['POST'])]
  25. public function update_parameters(
  26. Request $request,
  27. EntityManagerInterface $entityManager,
  28. ): JsonResponse
  29. {
  30. try {
  31. /** @var ?User $user */
  32. $user = $this->getUser();
  33. if (!$user) {
  34. throw new \Exception("User not found", Response::HTTP_FORBIDDEN);
  35. }
  36. // Using filter_var to be sure I get the value as the meant boolean
  37. $cookies = filter_var($request->request->get('cookies'), FILTER_VALIDATE_BOOLEAN);
  38. $geolocation = filter_var($request->request->get('geolocation'), FILTER_VALIDATE_BOOLEAN);
  39. $notifications = filter_var($request->request->get('notifications'), FILTER_VALIDATE_BOOLEAN);
  40. $emails = filter_var($request->request->get('emails'), FILTER_VALIDATE_BOOLEAN);
  41. $user->setAllowCookies($cookies);
  42. $user->setAllowGeolocation($geolocation);
  43. $user->setAllowNotifications($notifications);
  44. $user->setAllowEmails($emails);
  45. $entityManager->flush();
  46. return new JsonResponse('');
  47. } catch (\Throwable $th) {
  48. return new JsonResponse([
  49. 'error' => $th->getMessage(),
  50. ]);
  51. }
  52. }
  53. }