src/Controller/SecurityController.php line 32

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\User;
  4. use Doctrine\Persistence\ManagerRegistry;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use Symfony\Component\HttpFoundation\JsonResponse;
  9. use Symfony\Component\HttpFoundation\RequestStack;
  10. use Symfony\Component\Notifier\Recipient\Recipient;
  11. use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  14. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  15. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  16. use Symfony\Component\Security\Http\LoginLink\LoginLinkHandlerInterface;
  17. use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
  18. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  19. // use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  20. class SecurityController extends AbstractController
  21. {
  22.     // private UserPasswordHasherInterface $passwordEncoder;
  23.     public function __construct(UserPasswordHasherInterface $passwordEncoder)
  24.     {
  25.         $this->passwordEncoder $passwordEncoder;
  26.     }
  27.     #[Route(path'/login'name'app_login')]
  28.     public function login(AuthenticationUtils $authenticationUtils): Response
  29.     {
  30.         // if ($this->getUser()) {
  31.         //     return $this->redirectToRoute('target_path');
  32.         // }
  33.         // get the login error if there is one
  34.         $error $authenticationUtils->getLastAuthenticationError();
  35.         // last username entered by the user
  36.         $lastUsername $authenticationUtils->getLastUsername();
  37.         return $this->render('security/login.html.twig', ['last_username' => $lastUsername'error' => $error]);
  38.     }
  39.     #[Route(path'/register'name'app_register')]
  40.     public function register(Request $requestUserPasswordHasherInterface $passwordHasherManagerRegistry $doctrine): Response
  41.     {
  42.         // dd($request);
  43.         $userExist $doctrine->getRepository(User::class)->findOneBy(['username' => $request->get('username')]);
  44.         if($userExist){
  45.             return new JsonResponse('Username déja exist !'500);
  46.         }
  47.         $user = new User();
  48.         // $user->setEmail($request->get('email'));
  49.         $user->setUsername("admin");
  50.         // $user->setUsername($request->get('username'));
  51.         $user->setEnable(0);
  52.         $user->setPassword($passwordHasher->hashPassword(
  53.             $user,
  54.             "0123456789"
  55.         ));
  56.         // $user->setPassword($passwordHasher->hashPassword(
  57.         //     $user,
  58.         //     $request->get('password')
  59.         // ));
  60.         $user->setRoles(['ROLE_ADMIN']);
  61.         
  62.         $doctrine->getManager()->persist($user);
  63.         $doctrine->getManager()->flush();
  64.         return new JsonResponse('good');
  65.     }
  66.     // #[Route(path: '/session', name: 'app_session')]
  67.     // public function session(Request $request, TokenStorageInterface $TokenInterface, ManagerRegistry $doctrine)
  68.     // {
  69.     //     $em = $doctrine->getManager();
  70.     //     $username = $request->get('username');
  71.     //     $user = $em->getRepository(User::class)->findOneBy(['username' => $username]);
  72.     //     if(!$user){
  73.     //         return new JsonResponse("Invalide token",500);
  74.     //     }
  75.     //     if($user->getClosedDate() < new \Datetime("now")) {
  76.     //         return new JsonResponse("Votre token est expiré",500);
  77.     //     }
  78.     //     if(!$user->getEnable()) {
  79.     //         return new JsonResponse("Votre token est desactiver",500);
  80.     //     }
  81.     //     $token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
  82.     //     $TokenInterface->setToken($token);
  83.     //     // $TokenInterface->setUser($user);
  84.         
  85.     //     // $TokenInterface->setAuthenticated(true);
  86.     //     // $recipient = new Recipient($user->get());
  87.     //     dd($this->getUser());
  88.     // }
  89.     
  90.     /**
  91.      * @Route("/passwordchange", name="app_passwordchange")
  92.      */
  93.     public function passwordchange(Request $requestManagerRegistry $doctrine)
  94.     {
  95.         $em $doctrine->getManager();
  96.         $user $em->getRepository(User::class)->find($this->getUser()->getId());
  97.         // dump($user->getPassword());
  98.         if(!$this->passwordEncoder->isPasswordValid($user$request->get("an_password"))) {
  99.             return new JsonResponse("Votre mot de passe est incorrect !"500);
  100.         }
  101.         $user->setPassword($this->passwordEncoder->hashPassword(
  102.             $user,
  103.             $request->get('nv_password')
  104.         ));
  105.         // dump($user->getPassword());
  106.         $em->flush();
  107.         return new JsonResponse("Bien Enregistre!"200);
  108.     }
  109.     
  110.     #[Route(path'/logout'name'app_logout')]
  111.     public function logout(): void
  112.     {
  113.         throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.');
  114.     }
  115. }