- Ajout de la vue et du fonctionement de l'inscription.

- Ajout de la vue connexion.
This commit is contained in:
2025-01-29 10:24:13 +01:00
parent f2dd1047a1
commit 6f78a8a4a3
12 changed files with 1268 additions and 174 deletions

View File

@ -0,0 +1,40 @@
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
class LoginController extends AbstractController
{
#[Route('/login', name: 'app_login')]
public function login(AuthenticationUtils $authenticationUtils): Response
{
$error = $authenticationUtils->getLastAuthenticationError();
$lastUsername = $authenticationUtils->getLastUsername();
if ($error) {
$this->addFlash('error', 'Les identifiants sont incorrects.');
}
if ($this->getUser()) {
$this->addFlash('success', 'Connexion réussie !');
return $this->redirectToRoute('home');
}
return $this->render('login/index.html.twig', [
'last_username' => $lastUsername,
'error' => $error,
]);
}
#[Route('/logout', name: 'app_logout')]
public function logout(): Response
{
return $this->redirectToRoute('app_login');
}
}

View File

@ -0,0 +1,44 @@
<?php
namespace App\Controller;
use App\Entity\User;
use App\Form\RegistrationType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Doctrine\ORM\EntityManagerInterface;
class RegistrationController extends AbstractController
{
private $entityManager;
public function __construct(EntityManagerInterface $entityManager) // Injection du service EntityManagerInterface
{
$this->entityManager = $entityManager;
}
#[Route('/registration', name: 'app_registration')]
public function register (Request $request): Response
{
$user = new User();
$form = $this->createForm(RegistrationType::class, $user);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// Utilisation de l'EntityManager injecté
$this->entityManager->persist($user);
$this->entityManager->flush();
$this->addFlash('success', 'Votre compte a été créé avec succès !');
return $this->redirectToRoute('home');
}
return $this->render('registration/index.html.twig', [
'form' => $form->createView(),
]);
}
}

View File

@ -0,0 +1,50 @@
<?php
namespace App\Form;
use App\Entity\User;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class RegistrationType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('email', EmailType::class, [
'label' => 'Email',
'attr' => ['class' => 'form-control']
])
->add('password', PasswordType::class, [
'label' => 'Mot de passe',
'attr' => ['class' => 'form-control']
])
->add('pseudo', TextType::class, [
'label' => 'Pseudo',
'attr' => ['class' => 'form-control']
])
->add('firstname', TextType::class, [
'label' => 'Prénom',
'attr' => ['class' => 'form-control']
])
->add('lastname', TextType::class, [
'label' => 'Nom',
'attr' => ['class' => 'form-control']
])
->add('submit', SubmitType::class, [
'label' => 'S\'inscrire',
'attr' => ['class' => 'btn btn-primary']
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => User::class,
]);
}
}