src/Controller/SecurityController.php line 51

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Token;
  4. use App\Entity\User;
  5. use App\Repository\TokenRepository;
  6. use App\Repository\UserRepository;
  7. use App\Service\PasswordGenerator;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Psr\Log\LoggerInterface;
  10. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
  14. use Symfony\Component\Mailer\Transport\TransportInterface;
  15. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  18. class SecurityController extends AbstractController
  19. {
  20.     /**
  21.      * @Route("/login", name="app_login")
  22.      */
  23.     public function login(AuthenticationUtils $authenticationUtils): Response
  24.     {
  25.         // if ($this->getUser()) {
  26.         //     return $this->redirectToRoute('target_path');
  27.         // }
  28.         // get the login error if there is one
  29.         $error $authenticationUtils->getLastAuthenticationError();
  30.         // last username entered by the user
  31.         $lastUsername $authenticationUtils->getLastUsername();
  32.         return $this->render('security/login.html.twig', ['last_username' => $lastUsername'error' => $error]);
  33.     }
  34.     /**
  35.      * @Route("/logout", name="app_logout")
  36.      */
  37.     public function logout(): void
  38.     {
  39.         throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.');
  40.     }
  41.     /**
  42.      * @Route("/forget-password", name="app_forget_password")
  43.      */
  44.     public function forgetPassword(): Response
  45.     {
  46.         return $this->render('security/forget-password.html.twig');
  47.     }
  48.     /**
  49.      * @Route("/link/reset-pwd/{token}/{user}", name="reset_pwd_link")
  50.      */
  51.     public function resetLink(
  52.         string                      $token,
  53.         string                      $user,
  54.         TokenRepository             $tokenRepository,
  55.         UserRepository              $userRepository,
  56.         PasswordGenerator           $passwordGenerator,
  57.         TransportInterface          $mailer,
  58.         UserPasswordHasherInterface $passwordHasher,
  59.         EntityManagerInterface      $manager,
  60.         LoggerInterface             $logger
  61.     )
  62.     {
  63.         $token_ $tokenRepository->valideToken($token);
  64.         if (!$token_) {
  65.             throw $this->createNotFoundException();
  66.         }
  67.         $token_->setActivated(false);
  68.         $user_ $userRepository->findOneBy(['code' => $user'activated' => true]);
  69.         if (!$user_) {
  70.             throw $this->createNotFoundException();
  71.         }
  72.         $password $passwordGenerator->generate();
  73.         $user_->setPassword(
  74.             $passwordHasher->hashPassword($user_$password)
  75.         );
  76.         $user_->setFirstConnection(true);
  77.         $manager->persist($token_);
  78.         $manager->persist($user_);
  79.         $manager->flush();
  80.         try {
  81.             $email = (new TemplatedEmail())
  82.                 ->from('noreply@flexpaie.com')
  83.                 ->to($user_->getEmail())
  84.                 ->subject('RĂ©initialisation accès Konnect admin')
  85.                 ->htmlTemplate('security/_email_reinit_credential.html.twig')
  86.                 ->context([
  87.                     'password' => $password,
  88.                     'user' => $user_
  89.                 ]);
  90.             $mailer->send($email);
  91.         } catch (\Exception|TransportExceptionInterface $e) {
  92.             $logger->critical($e->getMessage());
  93.         }
  94.         return $this->render('security/new-pwd.html.twig', [
  95.             'password' => $password
  96.         ]);
  97.     }
  98. }