src/Controller/SecurityController.php line 57

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Form\ResetPasswordType;
  4. use App\Form\ResetType;
  5. use App\Service\Mail;
  6. use App\Service\MailFailedException;
  7. use Doctrine\Persistence\ManagerRegistry;
  8. use Psr\Log\LoggerInterface;
  9. use App\Entity\MailOutBox;
  10. use App\Entity\User;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  13. use Symfony\Component\HttpFoundation\RedirectResponse;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  17. use Symfony\Component\Validator\Validator\ValidatorInterface;
  18. use Symfony\Contracts\Translation\TranslatorInterface;
  19. use Symfony\Component\Routing\Annotation\Route;
  20. class SecurityController extends AbstractController
  21. {
  22.     private $doctrine;
  23.     public function __construct(ManagerRegistry $doctrine)
  24.     {
  25.         $this->doctrine $doctrine;
  26.     }
  27.     /**
  28.      * @Route("/login", name="login")
  29.      */
  30.     public function loginAction(Request $requestAuthenticationUtils $authUtils): Response
  31.     {
  32.         // get the login error if there is one
  33.         $error $authUtils->getLastAuthenticationError();
  34.         // last username entered by the user
  35.         $lastUsername $authUtils->getLastUsername();
  36.         return $this->render('security/login.html.twig', array(
  37.             'last_username' => $lastUsername,
  38.             'error' => $error,
  39.         ));
  40.     }
  41.     /**
  42.      * @Route("/resetPassword", name="resetPassword")
  43.      * @param Request $request
  44.      * @param AuthenticationUtils $authUtils
  45.      * @param TranslatorInterface $translator
  46.      * @param LoggerInterface $logger
  47.      * @return RedirectResponse|Response
  48.      */
  49.     public function resetPasswordEmailAction(
  50.         Request $request,
  51.         AuthenticationUtils $authUtils,
  52.         TranslatorInterface $translator,
  53.         LoggerInterface $logger,
  54.         ValidatorInterface $validator)
  55.     {
  56.         $em $this->doctrine->getManager();
  57.         $form $this->createFormBuilder()
  58.             ->add('mail'EmailType::class,[
  59.                 'label' => false,
  60.                 'attr' => [
  61.                     'placeholder' => 'user.email'
  62.                 ]
  63.             ])
  64.             ->getForm();
  65.         $form->handleRequest($request);
  66.         if ($form->isSubmitted())
  67.         {
  68.             try {
  69.                 $user $em->getRepository(User::class)->findOneBy(['email' => $form->getData()['mail']]);
  70.                 if ($user != null)
  71.                 {
  72.                     if ($user->getUserStatus()->getId() == 2)
  73.                     {
  74.                         $user->setToken(md5($user->getId().$user->getFirstnamelastname().time()));
  75.                         $em->persist($user);
  76.                         $em->flush();
  77.                         $this->addFlash('success'$translator->trans('login.resetPasswordSuccess'));
  78.                     } else {
  79.                         $this->addFlash('error'$translator->trans('login.accountNotActivated'));
  80.                     }
  81.                     $template $em->getRepository(\App\Entity\MailTemplates::class)->findOneBy(['id' => 2]);
  82.                     $mailOut = new MailOutBox();
  83.                     $mailOut->setRecipient($user->getEmail());
  84.                     $mailOut->setSubject($template->getSubject());
  85.                     $mailOut->setBody($template->getBody());
  86.                     $em->persist($mailOut);
  87.                     $em->flush();
  88.                     return $this->redirectToRoute('homepage');
  89.                 } else {
  90.                     $this->addFlash('success'$translator->trans('login.noAccount'));
  91.                     return $this->redirectToRoute('homepage');
  92.                 }
  93.             } catch (\Exception $exception) {
  94.                 $this->addFlash('error'$translator->trans('supplier.create_error'.$exception->getMessage()));
  95.                 $logger->error('Error while create Admin Supplier', ['e' => $exception]);
  96.             }
  97.         }
  98.         return $this->render('security/resetPassword.html.twig', array(
  99.             'form' => $form->createView(),
  100.         ));
  101.     }
  102. }