<?php
namespace App\Controller;
use App\Entity\User;
use App\Form\RegistrationType;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
class SecurityController extends AbstractController
{
private $security;
public function __construct(Security $security)
{
$this->security = $security;
}
/**
* @Route("/", name="security_connexion", methods={"GET","POST"})
*/
public function connexion(AuthenticationUtils $utils): Response
{
$current_user = $this->security->getUser();
$error = $utils->getLastAuthenticationError();
return $this->render('security/connexion.html.twig', [
'error' => $error,
'current_user' => $current_user
]);
}
/**
* @Route("/inscription", name="security_registration")
*/
public function registration(Request $request, EntityManagerInterface $manager, UserPasswordEncoderInterface $encoder)
{
$user = new User();
$formSecurity = $this->createForm(RegistrationType::class, $user);
$formSecurity->handleRequest($request);
if($formSecurity->isSubmitted() && $formSecurity->isValid()) {
$hash = $encoder->encodePassword($user, $user->getPassword());
$user->setPassword($hash);
// $user->setRole('ROLE_ADMIN');
$user->setRole('ROLE_USER');
$manager->persist($user);
$manager->flush();
$this->addFlash('success', 'Nouvelle inscription réalisée');
return $this->redirectToRoute('security_registration');
}
return $this->render('security/registration.html.twig', [
'formSecurity' => $formSecurity->createView()
]);
}
}