<?php
declare(strict_types=1);
namespace App\Controller;
use App\Entity\Account;
use App\Service\AccountService;
use App\Service\Security;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class IndexController extends AbstractController
{
#[Route('/', name: 'home')]
public function accountLogin(Security $security, Request $request, AccountService $accountService): Response
{
// Redirige l'utilisateur déjà connecté
if ($security->getUser() instanceof Account) {
return $this->redirectToRoute('app');
}
// Traite le formulaire de connexion
if ($request->isMethod('POST') && $this->isCsrfTokenValid('authenticate', $request->request->get('csrf'))) {
// On récupère le compte qui s'authentifie
$account = $accountService->getByLogin(
$request->request->get('email'),
$request->request->get('password'),
);
// Si un compte est valide, on le monte en session
if ($account instanceof Account) {
if ($account->isEnable()) {
$security->login($account, $request);
return $this->redirectToRoute('app');
} else {
$this->addFlash('warning', 'Votre compte est désactivé. Contactez contact@skeewai.com pour le réactiver.');
return $this->render('security/account_login.html.twig');
}
}
// Gestion d'un message d'erreur
$this->addFlash('warning', 'Ces identifiants ne permettent pas de retrouver votre compte');
}
// Affiche le formulaire de connexion
return $this->render('security/account_login.html.twig');
}
#[Route('/mentions-legales', name: 'legal')]
public function legal(): Response
{
return $this->render('index/legal.html.twig');
}
#[Route('/cgu', name: 'cgu')]
public function cgu(): Response
{
return $this->render('index/cgu.html.twig');
}
}