<?php
namespace App\Controller;
use App\Beans\Login;
use App\Repository\MembreRepository;
use App\Repository\RoleRepository;
use App\Form\LoginType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class LoginController extends AbstractController {
/**
* @Route("/login", name="app_login", methods={"GET","POST"})
*/
public function loginAction(
Request $request,
MembreRepository $membreRepo,
RoleRepository $roleRepo): Response {
$session = $request->getSession();
$login = new Login();
$form = $this->createForm(LoginType::class, $login);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$this->getDoctrine()->getManager()->flush();
// on recherche Membre correspondant
$membre = $membreRepo->findOneBy(array(
'username' => $login->getUsername(),
'password' => $login->getPassword()
));
// on recupère le password hashé via FormEvents::PRE_SUBMIT
// $passhash = $login->getPassword();
// $passhash = $form['passhash']->getData();
$passhash = $login->getPasshash();
if ($membre != null) {
$pass = $membre->getPassword();
$verif = password_verify($pass, $passhash);
}
if ($membre != null && $verif) {
// $session->getFlashBag ()->add ("message", $membre->getUsername () . " est connecté(e)");
// $session->set ('statut', 'warning');
//on met $membre à jour : droit
$droit = $roleRepo->find ($membre->getRole ())->getRole ();
$membre->setDroit ($droit);
// au chaud dans session
$session->set('membre', $membre);
$session->set('comite', $membre->getComite());
// $session->getFlashBag()->add("message", $membre->getComite()->__toString());
$session->getFlashBag()->add("message", 'connexion réussie ' . $session->get('membre')->getUsername() ." de ". $session->get('membre')->getComite()->__toString() );
$session->set('statut', 'warning');
return $this->redirectToRoute ('app_init');
} else {
$session->getFlashBag()->add("message", "identifiant ET/OU mot de passe incorrects ");
$session->set('statut', 'danger');
return $this->redirectToRoute('app_login');
}
}
return $this->render('login/login.html.twig', [
'login' => $login,
'form' => $form->createView(),
]);
}
/**
* @Route("/logout", name="app_logout", methods={"GET","POST"})
*/
public function logoutAction(Request $request): Response {
$session = $request->getSession();
// $membre = new Membre();
$membre = $session->get('membre');
if ($membre != null) {
$session->getFlashBag()->add("message", $membre->getUsername() . " est déconnecté(e)");
$session->set('statut', 'danger');
//on met au chaud
$session->set('membre', null);
$session->set('comite', null);
}
return $this->redirectToRoute('app_init');
}
}