<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Form\FormBuilderInterface;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use App\Entity\User;
use Symfony\Component\Security\Http\Attribute\IsGranted;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
class AuthentificationController extends AbstractController
{
#[Route('/', name: 'connexion')]
public function index(AuthenticationUtils $authUtils): Response
{
if ($this->getUser()) {
return $this->redirectToRoute('navigation');
}
return $this->render('auth/login.html.twig', [
'error' => $authUtils->getLastAuthenticationError(),
'last_username' => $authUtils->getLastUsername(),
]);
}
#[Route('/app_connexion', name: 'app_connexion')]
public function authentification(Request $request)
{
$login = $request->request->get('login');
$password = $request->request->get('password');
if (!$login || !$password) {
$this->addFlash('warning', "login et mot de passe requis");
return $this->redirectToRoute('connexion');
}
$user = $em->getRepository(User::class)->findOneBy(['email' => $login]);
if($user->getStatus() ==0)
{
$erreur=1;
$this->addFlash('warning', "Utilisateur inactif");
return $this->redirectToRoute('connexion');
}elseif($user->getStatus() == 2)
{
$erreur=1;
return $this->render('auth/login.html.twig', [
'controller_name' => 'AuthentificationController',
'erreur' => $erreur,
'messae' => 'Compte bloque',
]);
}
// dd($user,$passwordHasher->isPasswordValid($user, $password));
if (!$user || !$passwordHasher->isPasswordValid($user, $password)) {
$erreur=1;
return $this->render('auth/login.html.twig', [
'controller_name' => 'AuthentificationController',
'erreur' => $erreur,
'messae' => 'Identifiants invalides',
]);
}
if ($user->isPremiereConnexion() == 0 ) {
return $this->render('auth/changerPassword.html.twig', [
'controller_name' => 'AuthentificationController',
'erreur' => $erreur,
'messae' => "Veuillez changer votre mot de passe",
]);
}
return $this->redirectToRoute('navigation');
}
#[Route('/changerPassword', name: 'changer_password', methods: ['GET', 'POST'])]
public function changerPassword(Request $request, EntityManagerInterface $em, UserPasswordHasherInterface $passwordHasher): Response
{
$user = $this->getUser();
if (!$user instanceof User) {
return $this->redirectToRoute('connexion');
}
if ($request->isMethod('POST')) {
$newPassword = $request->request->get('new_password');
$confirmPassword = $request->request->get('confirm_password');
if (!$newPassword || $newPassword !== $confirmPassword) {
$this->addFlash('warning', 'Les mots de passe ne correspondent pas.');
return $this->redirectToRoute('changer_password');
}
$user->setPassword($passwordHasher->hashPassword($user, $newPassword));
$user->setPremiereConnexion(true);
$em->flush();
return $this->redirectToRoute('navigation');
}
return $this->render('auth/changerPassword.html.twig');
}
#[Route('/passOublier', name: 'passOublier')]
public function PassOublier(): Response
{
return $this->render('auth/forget_password.html.twig', [
'controller_name' => 'AuthentificationController',
]);
}
/**
* @Route("/avantdeconnexion", name="avantdeconnexion")
*/
public function avantdeconnexion()
{
return $this->redirectToRoute('deconnexion');
}
/**
* @Route("/deconnexion", name="deconnexion")
*/
public function deconnexion()
{
}
}