src/Controller/PageController.php line 31

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Faq;
  4. use App\Entity\User;
  5. use App\Service\GmailService;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Doctrine\Persistence\ManagerRegistry;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\JsonResponse;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use App\Service\UserService;
  15. use App\Service\MailService;
  16. class PageController extends AbstractController
  17. {
  18.     private $userService;
  19.     public function __construct(UserService $userService)
  20.     {
  21.         $this->userService $userService;
  22.     }
  23.     /**
  24.      * @Route("/kontakt", name="contact")
  25.      */
  26.     public function contact(): Response
  27.     {
  28.         return $this->render('page/contact.html.twig', [
  29.             'controller_name' => 'PageController',
  30.         ]);
  31.     }
  32.     /**
  33.      * @Route("/faq", name="faq")
  34.      */
  35.     public function faq(ManagerRegistry $doctrine): Response
  36.     {
  37.         $faq $doctrine->getRepository(Faq::class)->findAllArray();
  38.         $faqCategory $doctrine->getRepository(Faq::class)->countByCategory();
  39.         foreach ($faqCategory as $item) {
  40.             $category $item['category'];
  41.             unset($item['category']);
  42.             $faqCategoryCount[$category] = $item['count'];
  43.         }
  44.         return $this->render('page/faq.html.twig', [
  45.             'faq' => $faq,
  46.             'category' => $faqCategoryCount
  47.         ]);
  48.     }
  49.     /**
  50.      * @Route("/przypomnij_haslo", name="forgot_password")
  51.      */
  52.     public function forgotPassword(): Response
  53.     {
  54.         return $this->render('page/forgotPassword.html.twig', [
  55.             'controller_name' => 'PageController',
  56.         ]);
  57.     }
  58.     /**
  59.      * @Route("/recovery_password", name="recovery_password")
  60.      */
  61.     public function recoveryPassword(GmailService $mailerRequest $requestManagerRegistry $doctrineUserPasswordHasherInterface $passwordHasherEntityManagerInterface $entityManager): JsonResponse
  62.     {
  63.         $json $request->getContent();
  64.         $data json_decode($jsontrue);
  65.         $user $doctrine->getRepository(User::class)->findOneByEmail($data['email']);
  66.         if ($user instanceof User) {
  67.             $mailService = new MailService();
  68.             $newPassword $this->userService->generatePassword();
  69.             $user->setPassword($passwordHasher->hashPassword(
  70.                 $user,
  71.                 $newPassword)
  72.             );
  73.             $entityManager->persist($user);
  74.             $mailer->sendTwigEmail(
  75.                 $data['email'],
  76.                 'Nowe HasÅ‚o',
  77.                 'reset_password',
  78.                 ['password' => $newPassword]
  79.             );
  80.             $entityManager->flush();
  81.             return new JsonResponse(['success' => true], 200);
  82.         }
  83.         return new JsonResponse(['success' => false], 400);
  84.     }
  85. }