src/Controller/SecurityController.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\History;
  4. use App\Repository\HistoryRepository;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  9. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  10. use Symfony\Component\HttpFoundation\Request;
  11. class SecurityController extends AbstractController
  12. {
  13.     /**
  14.      * @Route("/", name="app_login")
  15.      */
  16.     public function login(Request $requestSessionInterface $sessionAuthenticationUtils $authenticationUtilsHistoryRepository $historyRepository): Response
  17.     {
  18.         $user $this->getUser();
  19.         $history = new History();
  20.         if ($user) {  
  21.             $sessionDateTime = new \DateTime('now', new \DateTimeZone('Europe/Paris'));
  22.             $connexion $sessionDateTime;
  23.             // Récupérer la dernière connexion depuis la base de données
  24.             $lastHistory $historyRepository->findOneBy(['User' => $user], ['createdAt' => 'desc']);
  25.             $history = new History();
  26.             //dd($lastHistory);
  27.             if ($lastHistory) {
  28.                 // Extraire les dates de la dernière connexion et la nouvelle connexion
  29.                 $lastConnexion $lastHistory->getConnexion(); 
  30.                 // Vérifier si les dates sont définies
  31.                 if ($lastConnexion && $connexion) {
  32.                     // Calculer la durée entre les deux dates
  33.                     $duree $lastConnexion->diff($connexion);
  34.                     $dureeString $duree->format('%Y-%M-%D %H:%I:%S');
  35.                     
  36.                     $history
  37.                         ->setUser($user)
  38.                         ->setIpAdresse($request->server->get("REMOTE_ADDR"))
  39.                         ->setConnexion($connexion)
  40.                         ->setDuree($dureeString)
  41.                         ->setLastConnexion($lastConnexion)
  42.                         ->setAction('Connexion')
  43.                         ->setDescription('L\'utilisateur ' $user->getUsername() . ' s\'est connecté.');
  44.                         $entityManager $this->getDoctrine()->getManager();
  45.                         $entityManager->persist($history);
  46.                         $entityManager->flush();
  47.                     
  48.                 }  
  49.                 else {
  50.                     $history
  51.                     ->setUser($user)
  52.                     ->setIpAdresse($request->server->get("REMOTE_ADDR"))
  53.                     ->setConnexion($connexion)
  54.                     ->setDuree(null)
  55.                     ->setLastConnexion($connexion)
  56.                     ->setAction('Connexion')
  57.                     ->setDescription('L\'utilisateur ' $user->getUsername() . ' s\'est connecté.');
  58.                     $entityManager $this->getDoctrine()->getManager();
  59.                     $entityManager->persist($history);
  60.                     $entityManager->flush();
  61.                 }
  62.             }
  63.             else {
  64.                 $history
  65.                 ->setUser($user)
  66.                 ->setIpAdresse($request->server->get("REMOTE_ADDR"))
  67.                 ->setConnexion($connexion)
  68.                 ->setDuree(null)
  69.                 ->setLastConnexion($connexion)
  70.                 ->setAction('Connexion')
  71.                 ->setDescription('L\'utilisateur ' $user->getUsername() . ' s\'est connecté.');
  72.                 $entityManager $this->getDoctrine()->getManager();
  73.                 $entityManager->persist($history);
  74.                 $entityManager->flush();
  75.             }
  76.             if ($user->getRoles()[0]=="ROLE_ADMIN") {
  77.                 return $this->redirectToRoute('admin');
  78.            }
  79.            
  80.            elseif ($user->getRoles()[0]=="ROLE_USER") {
  81.                 return $this->redirectToRoute('account');
  82.            }
  83.         }
  84.          $error $authenticationUtils->getLastAuthenticationError();
  85.          $lastUsername $authenticationUtils->getLastUsername();
  86.         return $this->render('security/login.html.twig', ['last_username' => $lastUsername'error' => $error]);
  87.     }
  88.     /**
  89.      * @Route("/deconnexion", name="app_logout")
  90.      */
  91.     public function logout()
  92.     {
  93.         throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.');
  94.     }
  95.     public function calculateDuration($lastLogin ,  $currentLogin ): ?\DateInterval
  96.     {
  97.         // $lastLogin = $this->getUser()->getLastLogin();
  98.         // $currentLogin = $this->getCreatedAt();
  99.         // if ($lastLogin && $currentLogin) {
  100.         //     return $lastLogin->diff($currentLogin);
  101.         // }
  102.         return null;
  103.     }
  104. }